首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有父窗体的NativeWindow的AssignHandle

没有父窗体的NativeWindow的AssignHandle
EN

Stack Overflow用户
提问于 2017-05-10 07:20:07
回答 1查看 775关注 0票数 2

对于NativeWindow应该用于什么,我有点困惑。

我想要做的是实例化一个NativeWindow-derived对象,并使用它侦听特定的-derived事件,而不是在我的表单中监听它们。然而,我似乎明白,为了让我的窗口的消息泵接收消息,我需要给窗口分配一个句柄。我可以找到的教程都提到将窗口分配给“父窗体”的句柄,这会部分地辜负我的目标(好吧,我可以分离消息侦听关注点,但我仍然需要将这个关注点附加到我的表单上,而不是让它自己运行)。

因此,关于这个问题:

有一种方法可以构造一个可以在其消息泵NativeWindow form 中接收系统事件的,而不必使它成为另一个form的“子”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-11 07:19:03

我终于解决了我的问题。我的问题有两个方面:NativeWindow本身和USB通知。

正确实现NativeWindow

感谢Sinatr为我指明了正确的方向。This thread为纯消息窗口问题提供了一个很好的解决方案。我用它作为窗口的基类。

接收USB通知消息-或任何其他需要句柄的消息,用于该。

我想要听的消息是USB通知,我跟踪了this answer。我的问题是我必须注册到那些将句柄作为参数传递的消息.但是我没有注意到,在CreateWindow()被调用之前,我就这样做了,所以没有有效的句柄。

因此,确保在派生类中执行类似的操作:

代码语言:javascript
复制
public override bool CreateWindow()
{
    bool retval = base.CreateWindow();
    USBNotification.RegisterUSBDeviceNotification(this.Handle);
    // or the registration to any notification you need
    // or any use you have for the handle
    return retval;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43885905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档