我问的标题是什么。有可能吗?
由于MSG
已经包含了自制事件处理程序所需的所有内容,我想也许我可以制作一个。我主要想要解决这个问题,因此我可以在窗口类中使用内部函数和类来提高性能。我也想知道是否可以单独使用MSG并随心所欲地做任何事情。
基本上有另一种获取窗口消息的方法,然后处理它与此thread中的常规循环不相似吗?
编辑:
目前我正在使用GetMessage()函数来获取MSG
结构并在我自己的事件处理程序中使用它,但是我没有得到我想要的所有消息。还有什么我应该做的吗?
先谢谢你。
答案 0 :(得分:4)
目前我正在使用GetMessage()函数来获取MSG结构
问题是什么,GetMessage()只检索发布到消息队列的消息。它不检测与SendMessage()一起发送的消息。绕过消息队列并直接调用窗口过程。
因此必须使用WndProc查看所有窗口的消息。
进入队列并由GetMessage()返回的已发布消息的子集很小。简而言之,鼠标和键盘的输入通知消息以及低优先级消息(WM_PAINT,WM_TIMER,WM_QUIT)。始终发送WM_ACTIVATE。
替换窗口的WndProc当然是一种常见的技术,它被称为“sub-classing the window"。任何C ++类库包装器都使用它来将消息映射到C ++方法。最好不要重新发明那个轮子。” p>