gpt4 book ai didi

c++ - 用另一个函数替换 WndProc 来处理消息?

转载 作者:行者123 更新时间:2023-11-30 01:55:08 25 4
gpt4 key购买 nike

正如标题所说,我在问。可能吗?

因为 MSG 已经包含了我自制事件处理程序所需的所有东西,我想也许我可以做一个。我问这主要是为了摆脱解释型转换,这样我就可以在我的窗口类中使用内部函数和类来提高性能。我还想知道是否可以单独获取 MSG 并用它做任何我想做的事。

基本上有另一种方法来获取窗口消息,然后处理它,这与 thread 中发现的一般循环不同。 ?

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

先谢谢你。

最佳答案

Currently I'm using GetMessage() function to get the MSG struct

问题出在哪里,GetMessage() 只检索发布到消息队列的消息。它检测使用 SendMessage() 发送的消息。绕过消息队列,直接调用窗口过程。

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

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

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

关于c++ - 用另一个函数替换 WndProc 来处理消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20972234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com