我对 NativeWindow
的用途有点困惑。
我想要做的是实例化一个 NativeWindow
派生对象并使用它来监听某些 Windows 事件 - 而不是以我的一种形式监听它们。但是,我似乎明白,为了让窗口的消息泵接收消息,我需要为窗口分配一个句柄。我能找到的所有教程都涉及为窗口分配“父窗体”的句柄,这将部分地破坏我的目标(好吧,我将分离消息监听问题,但我仍然需要附加该问题到我的其中一种形式,而不是让它单独运行)。
所以,对于这个问题:
是否有一种方法可以构造一个 NativeWindow
,使其能够在其消息泵中接收系统事件而不必使其成为另一种形式的“子级”?
最佳答案
我的问题终于解决了。我的问题有两个:NativeWindow 本身和 USB 通知。
正确实现NativeWindow
感谢Sinatr为我指明了正确的方向。 This thread对于仅消息窗口问题有一个很好的解决方案。我用它作为我的窗口的基类。
接收 USB 通知消息 - 或任何其他需要句柄的消息
我想听的消息是 USB 通知,我关注了 this answer 。我的问题是我必须注册那些将句柄作为参数传递的消息...但我没有注意,最终在调用 CreateWindow() 之前这样做/em>,因此没有有效的句柄。
因此,请确保在派生类中执行类似的操作:
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;
}
关于c# - NativeWindow的AssignHandle没有父窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43885905/