Преобразование дескриптора окна IntPtr в IWin32Window ^
Как преобразовать дескриптор, полученный из свойства Handle формы/управления, в IWin32Window ^?
Ответы
Ответ 1
Control.FromHandle
(Это дает вам объект Control, который реализует интерфейс IWin32Window.)
Eg.
IntPtr myWindowHandle = IntPtr(someVal);
IWin32Window^ w = Control::FromHandle(myWindowHandle);
Обратите внимание, что это зависит от того, что дескриптор "получен из свойства формы/управления Handle". Вы не можете использовать эту технику с помощью дескриптора окна Win32.
Ответ 2
Существует более простой метод, поддерживаемый непосредственно платформой .NET без необходимости создания собственного пользовательского класса. Вы можете использовать это с любым произвольным дескриптором Window.
Учитывая ptrWindowHandle типа IntPtr:
using System.Windows.Forms;
NativeWindow nativeWindow = new NativeWindow();
nativeWindow.AssignHandle(ptrWindowHandle);
System.Windows.Forms.NativeWindow реализует интерфейс IWin32Window.
Ответ 3
Это похоже на то, о чем вы просите. Я никогда не делал этого сам, но он выглядит относительно простым:
Создание IWin32Window из дескриптора Win32
Удачи!