【发布时间】:2017-05-10 07:20:07
【问题描述】:
我有点困惑NativeWindow 应该用于什么。
我想做的是实例化一个NativeWindow-派生对象并用它来监听某些Windows事件——而不是在我的一种形式中监听它们。但是,我似乎明白,为了让窗口的消息泵接收消息,我需要为窗口分配一个句柄。我能找到的教程都是指为窗口分配“父表单”的句柄,这会部分地违背我的目标(好的,我将分离消息监听问题,但我仍然需要附加该问题到我的一种形式,而不是让它自己运行)。
所以,对于这个问题:
有没有办法构造一个NativeWindow,它能够在其消息泵中接收系统事件而不必使其成为另一种形式的“孩子”?
【问题讨论】:
-
听起来像XY problem。我不知道
NativeWindow类的目的(注册自己的窗口类?),但你能说出你想听哪些事件和听什么吗?有全局键盘/鼠标事件的钩子。 -
@Sinatr 由于这条评论 (stackoverflow.com/questions/16245706/…),我觉得
NativeWindow是我的解决方案。我需要听 USB 设备连接/断开连接。 -
你去过here吗?
-
@Sinatr 感谢您的提示。但是,我的窗口仍然没有收到系统事件:(
-
是的,NativeWindow 足以完成这项工作。您必须派生自己的类,以便可以覆盖 WndProc()。并调用它的 CreateHandle() 方法来创建窗口。您传递的 CreateParams 在这里并不重要,默认值就可以了。不再需要时调用 DestroyHandle()。