winforms - 如何从 System.Windows.Forms.Form 中获取 HWND 句柄

标签 winforms visual-studio visual-c++ handle

鉴于形式

System.Windows.Forms::Form Form1;

和窗 Handlebars
HWND hWnd;

根据 Microsoft documentation of System.Windows.Forms::Form,如何将 hWnd 设置为 Form1 的 Handle 属性,该属性确实作为公共(public)属性存在,“获取控件绑定(bind)到的窗口句柄。(继承自 Control。)” ?在我的 Form Form1 的构造函数中,我尝试过
hWnd = this.Handle;

但编译器提示:

错误 C2228:'.Handle' 的左侧必须有类/结构/联合类型是 'MyNamespace::Form1 ^const' 你打算改用 '->' 吗?

所以我尝试
hWnd = this->Handle;

并且只是
hWnd = Handle; // Since I'm in the Form

然后编译器说:

错误 C2440:“=”:无法从“System::IntPtr”转换为“HWND”没有可以执行此转换的用户定义转换运算符,或者无法调用该运算符

最佳答案

我找到了一个解决方案,并且不在乎它是否是一个kludge。

hWnd = static_cast<HWND>(Handle.ToPointer());

作品。

关于winforms - 如何从 System.Windows.Forms.Form 中获取 HWND 句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621437/

相关文章:

c# - 获取屏幕边缘和网页之间的距离

c# - 使用 C# 使用网络摄像头按命令拍照

c++ - 无法引用变量...为什么?

c++ - 显式初始化指针 vector 会导致转换错误?

c# - 更改 winform 工具提示背景色

c# - windiff 样式垂直线

c# - Visual Studio - 路径中的非法字符

c++ - 删除内联函数调用导致 Unresolved external symbol 错误

c# - 列出所有 `throw new NotImplementedException()` 方法的任何 VS C# 方法?

c++ - 为什么由于标量删除而调用 vector 删除析构函数?