通常的WinAPI消息循环如下所示:
MSG msg;
while (GetMessage(&msg, hwnd, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
是否允许不调用DispatchMessage(),而是自己处理消息?如果没有,我怎么能在避免全局变量和线程问题的同时很好地处理这种行为呢?
编辑: 我基本上想要使用自己的回调函数,它没有WndProc签名。但我想不出一种在不使用静态或全局变量的情况下从WndProc中调用该函数的方法。 [这需要锁定,我认为这不是你可以用回调函数做的最好的事情,可能会经常被调用。]
感谢您的帮助。
答案 0 :(得分:2)
您可以对那里的消息做出反应,但您仍然需要/想要调用DispatchMessage
并实际处理正常wndproc中的消息。我很乐意多说一些关于避免全局和/或线程问题的内容,但如果没有关于你想要避免的更多细节,就很难发表评论。
答案 1 :(得分:1)
是的,如果您愿意,您可以自己处理此消息。我通常将结果字段设置为0,但Windows仅将此字段用于一些消息。