我试图在我的Java代码中接收WM_HOTKEY事件。我已经成功地完成了一些丢弃代码的工作,但我知道将Java代码与Windows消息循环集成需要谨慎。
从Windows示例中可以看出,User32.INSTANCE.GetMessage是通知我注册使用User32.INSTANCE.RegisterHotKey的WM_HOTKEY事件的关键函数。
所以.我想知道
非常感谢您帮助Java程序员了解Win API的概念。
发布于 2014-07-10 19:17:39
我是否正确地理解了RegisterHotKey和我的消息循环必须运行在同一个Java线程上?
是。在RegisterHotKey() 文档中提到了这一点。
此函数不能将热键与另一个线程创建的窗口相关联。
我是否正确地理解了必须从创建GetMessage的线程调用Windows的GetMessage函数,即Java的事件调度线程?
是。创建窗口的线程拥有窗口,只有拥有的线程才能接收窗口的消息。
如果是这样的话,我无法在事件调度线程上创建一个消息循环,因为它会阻止其他事件。我应该用PeekMessage代替吗?
你可以,是的。
如果是这样的话,我会有轮询代码,这不是我最喜欢的。我应该多久打一次电话给PeekMessage?PeekMessage又轻又快吗?
我建议创建一个专用线程,该线程创建自己的窗口,并使用GetMessage()作为消息循环。
https://stackoverflow.com/questions/24683332
复制相似问题