Bir form/denetimin Handle özelliğinden alınan bir tanıtıcıyı bir IWin32Window^öğesine nasıl dönüştürebilirim?Bir IntPtr penceresi tanıtıcısını IWin32Window^
cevap
(Bu sana IWin32Window arabirimini uygulayan Kontrol nesnesi, alır.)
Örn.
IntPtr myWindowHandle = IntPtr(someVal);
IWin32Window^ w = Control::FromHandle(myWindowHandle);
Bunun, "bir formun/denetimin Handle özelliğinden alınan" tanıtıcıya dayanması gerektiğini unutmayın. Bu tekniği rasgele bir Win32 penceresi tanıtıcısıyla kullanamazsınız.
Bu, tam olarak ne istediğinizi gösteriyor gibi görünüyor. Kendim hiç yapmadım, ama nispeten basit gibi görünen:
Creating a IWin32Window from a Win32 Handle
İyi şanslar!
Kendi özel sınıfınızı oluşturmak zorunda kalmadan doğrudan .NET çerçevesi tarafından desteklenen daha basit bir yöntem var. Bunu, herhangi bir rasgele Pencere tanıtıcısıyla kullanabilirsiniz.IWin32Window arabirimini uygulayan
using System.Windows.Forms;
NativeWindow nativeWindow = new NativeWindow();
nativeWindow.AssignHandle(ptrWindowHandle);
System.Windows.Forms.NativeWindow:
tip ıntptr ait ptrWindowHandleVerilen.Ayrıca sadece Statik NativeWindow.FromHandle (ptrWindowHandle); ' –
@MattSmith de kullanabilirsiniz. AssignHandle önceden kullanılmadığı sürece FromHandle benim için çalışmaz. Örneğin bu çalışır: NativeWindow nativeWindow = new NativeWindow(); nativeWindow.AssignHandle (GetConsoleWindow()); box.ShowDialog (NativeWindow.FromHandle (GetConsoleWindow())); '(hatta box.ShowDialog (nativeWindow);') ... ama bu tek liner atama olmadan: 'box.ShowDialog (NativeWindow. FromHandle (GetConsoleWindow())); ' – Jay
- 1. C#, bir IntPtr
- 2. HANDLE (IntPtr) Eski, kernel32.dll, IntPtr için SafeFileHandle
- 3. HWND'yi IntPtr (CLI) dönüştürün
- 4. IntPtr yerine SafeHandle kullanabilir miyim?
- 5. IntPtr, SafeHandle ve HandleRef - Açıklaması
- 6. Safari'de textarea resize tanıtıcısını gizleme
- 7. Get Window handle (IntPtr) Selenium webdriver'ın geçerli penceresinden GUID
- 8. C# - Nasıl IntPtr ve Geri Nesne Dönüştürülür?
- 9. .Owner özelliği ve ShowDialog (IWin32Window sahibi) arasındaki fark?
- 10. XT pencere tanıtıcısını GtkWidget öğesinden alma
- 11. Bash'ta bir dosya tanıtıcısını belirtmek için değişken nasıl kullanılır?
- 12. QTAgent32.exe, yürütme sonrasında bir DLL tanıtıcısını açık tutar
- 13. Bir DOSYA işaretçisini temel dosya tanıtıcısını kapatmadan kapatın
- 14. Perl: Açık dosya tanıtıcısını bir program okumasına geçirin STDIN
- 15. C# 'de bir İşlem' ana pencere tanıtıcısını nasıl edinirsiniz?
- 16. , webflow tanıtıcısını "değerlendirme" etiketinin içinde dinamik bir ifadeyle yayınlayabilir mi?
- 17. Google maps v3 bilgi penceresi dış görünüm penceresi açılıyor
- 18. Çıkış penceresi nasıl eklenir?
- 19. WPF ön yükleme penceresi
- 20. Hata ayıklamadan hemen Penceresi
- 21. tarayıcı penceresi boyutu mu?
- 22. WPF Çocuk penceresi
- 23. Plotlama Penceresi Genel Başlığı
- 24. Kakao penceresi pozisyonu anormalliği
- 25. Tkinter Penceresi Boyut Al
- 26. VTK penceresi doldurmuyor wx.Panel
- 27. Sıkıcı Boş VBA Penceresi
- 28. Java - Küçültülmüş bir JFrame penceresi gösterme
- 29. Yeniden boyutlandırılamayan bir GLFW penceresi ayarlama
- 30. WSD'den bir Explorer penceresi başlatmak için WSL
James, cevabınıza bir nitelendirme düzenledim çünkü burada daha genel bir arama olan IntPtr ve 'IWin32Window 'dan gelen kişiler soru başlığını okuyabilir ve soru detayındaki kısıtlamayı takdir etmeyebilirler. Umarım bu iyidir. – itowlson
Hayır, bu iyi bir düzenleme. Muhtemelen bazı huzursuz geleceğin programlayıcılarını, saatlerce süren kafa çiziklerinden, neden gerçek bir HWND'den bir Kontrol/IWin32Window nesnesi oluşturamadığını merak ettiniz. :) –