如何将从表单/控件的Handle属性获取的句柄转换为IWin32Window ^?
答案 0 :(得分:23)
(这将获得Control对象,它实现了IWin32Window接口。)
例如
IntPtr myWindowHandle = IntPtr(someVal);
IWin32Window^ w = Control::FromHandle(myWindowHandle);
请注意,这取决于“从表单/控件的Handle属性中获取”句柄。您不能将此技术用于任意Win32窗口句柄。
答案 1 :(得分:23)
.NET框架直接支持一种更简单的方法,而无需创建自己的自定义类。您可以将其与任意任意窗口句柄一起使用。
给出类型 IntPtr 的 ptrWindowHandle :
using System.Windows.Forms;
NativeWindow nativeWindow = new NativeWindow();
nativeWindow.AssignHandle(ptrWindowHandle);
System.Windows.Forms.NativeWindow 实现 IWin32Window 界面。
答案 2 :(得分:7)
这似乎正是您所要求的。我自己从未这样做过,但似乎相对简单:
祝你好运!