对于NativeWindow应该用于什么,我有点困惑。
我想要做的是实例化一个NativeWindow-derived对象,并使用它侦听特定的-derived事件,而不是在我的表单中监听它们。然而,我似乎明白,为了让我的窗口的消息泵接收消息,我需要给窗口分配一个句柄。我可以找到的教程都提到将窗口分配给“父窗体”的句柄,这会部分地辜负我的目标(好吧,我可以分离消息侦听关注点,但我仍然需要将这个关注点附加到我的表单上,而不是让它自己运行)。
因此,关于这个问题:
有一种方法可以构造一个可以在其消息泵NativeWindow form 中接收系统事件的,而不必使它成为另一个form的“子”。
发布于 2017-05-11 07:19:03
我终于解决了我的问题。我的问题有两个方面:NativeWindow本身和USB通知。
正确实现NativeWindow的
感谢Sinatr为我指明了正确的方向。This thread为纯消息窗口问题提供了一个很好的解决方案。我用它作为窗口的基类。
接收USB通知消息-或任何其他需要句柄的消息,用于该。
我想要听的消息是USB通知,我跟踪了this answer。我的问题是我必须注册到那些将句柄作为参数传递的消息.但是我没有注意到,在CreateWindow()被调用之前,我就这样做了,所以没有有效的句柄。
因此,确保在派生类中执行类似的操作:
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;
}https://stackoverflow.com/questions/43885905
复制相似问题