Преобразовать дескриптор окна IntPtr в IWin32Window ^ - PullRequest
17 голосов
/ 20 марта 2010

Как преобразовать дескриптор, полученный из свойства Handle формы / элемента управления, в IWin32Window ^?

Ответы [ 3 ]

23 голосов
/ 20 марта 2010

Control.FromHandle

(Получает объект Control, который реализует интерфейс IWin32Window.)

Например.

IntPtr myWindowHandle = IntPtr(someVal);
IWin32Window^ w = Control::FromHandle(myWindowHandle);

Обратите внимание, что это зависит от дескриптора, "получаемого из свойства Handle формы / элемента управления". Вы не можете использовать эту технику с произвольным дескриптором окна Win32.

23 голосов
/ 09 июня 2012

Существует более простой метод, который поддерживается непосредственно .NET Framework без необходимости создания собственного пользовательского класса. Вы можете использовать это с любой произвольный дескриптор окна.

Дано ptrWindowHandle типа IntPtr :

using System.Windows.Forms;

NativeWindow nativeWindow = new NativeWindow();
nativeWindow.AssignHandle(ptrWindowHandle);

System.Windows.Forms.NativeWindow реализует интерфейс IWin32Window .

7 голосов
/ 20 марта 2010

Похоже, это именно то, что вы просите. Я никогда не делал это сам, но это кажется относительно простым:

Создание окна IWin32 из дескриптора Win32

Удачи!

...