c++ cli - Convertir un identificador de ventana IntPtr a IWin32Window ^
c++-cli handle (3)
¿Cómo convierto un manejador adquirido de la propiedad Handle de un formulario / control, en una IWin32Window ^?
Esto parece ser exactamente lo que estás pidiendo. Nunca lo he hecho yo mismo, pero parece ser relativamente sencillo:
Creando una ventana IWin32 desde un controlador Win32
¡Buena suerte!
Existe un método más simple que es compatible directamente con el marco .NET sin tener que crear su propia clase personalizada. Puedes usar esto con cualquier manejador de ventana arbitrario.
Dado ptrWindowHandle de tipo IntPtr :
using System.Windows.Forms;
NativeWindow nativeWindow = new NativeWindow();
nativeWindow.AssignHandle(ptrWindowHandle);
System.Windows.Forms.NativeWindow implementa la interfaz IWin32Window .
(Eso te da el objeto Control, que implementa la interfaz IWin32Window)
P.ej.
IntPtr myWindowHandle = IntPtr(someVal);
IWin32Window^ w = Control::FromHandle(myWindowHandle);
Tenga en cuenta que esto depende de que el identificador se "obtenga de la propiedad Manejar de un formulario / control". No puede utilizar esta técnica con un identificador de ventana de Win32 arbitrario.