将 WndProc 替换为另一个函数来处理消息



我问的是标题所说的。可能吗?

由于MSG已经包含了自制事件处理程序所需的所有内容,我想也许我可以制作一个。我要求这样做主要是为了摆脱解释型转换,以便我可以在我的窗口类中使用内部函数和类来提高性能。我也想知道是否有可能单独得到味精并用它做任何我想做的事情。

基本上有没有另一种方法可以获取窗口消息,然后处理它,而不是类似于在此线程中找到的一般循环?

编辑:目前,我正在使用 GetMessage() 函数来获取 MSG 结构并在我自己的事件处理程序中使用它,但是我没有获得我想要的所有消息。还有什么我应该做的吗?

提前谢谢你。

目前我正在使用 GetMessage() 函数来获取 MSG 结构

这就是问题所在,GetMessage() 仅检索发布到消息队列的消息。 它不会检测使用 SendMessage() 发送的消息。 它绕过消息队列并直接调用窗口过程。

因此,必须使用 WndProc 查看窗口的所有消息。

进入队列并因此由 GetMessage() 返回的已发布消息的子集很小。 简而言之,鼠标和键盘的输入通知消息以及低优先级消息(WM_PAINT、WM_TIMER、WM_QUIT)。 始终发送WM_ACTIVATE。

替换窗口的WndProc当然是一种常见的技术,它被称为"子类化窗口"。 任何C++类库包装器都使用它来将消息映射到C++方法。 最好不要重新发明那个轮子。

相关内容

  • 没有找到相关文章

最新更新