gpt4 book ai didi

c++ - WinProc() 与主消息循环

转载 作者:可可西里 更新时间:2023-11-01 11:49:14 24 4
gpt4 key购买 nike

我注意到 WinAPI 中的某些消息只能在使用 PeekMessage() 的“主消息循环”中检索(如 WM_QUIT),其他消息只能在用户定义的 winProc() 函数(如 WM_CLOSEWM_SIZE),以及一些消息,如 WM_MOUSEMOVE两者。

有什么区别?我如何知道 WM 消息将发送到哪里?

最佳答案

使用 NULL 窗口句柄发布的消息只能在消息循环中检索。必然如此,DispatchMessage() 无法完成它的工作。这是非常罕见的。

但是,是的,WM_QUIT,注意如何 PostQuitMessage()不带窗口句柄。这是不可避免的,当您调用 PostQuitMessage() 时,您(通常)没有任何窗口,因此只有 NULL 窗口句柄是明智的。当然它的真正意图是让 GetMessage() 返回 FALSE 从而终止消息循环。

我能想到的唯一其他情况是使用 PostThreadMessage() 生成的消息.请注意这是一个非常危险的函数,它不应该用于将消息发布到曾经显示任何窗口的线程。当另一个消息循环泵送时,此类消息落入位桶中。就像允许用户移动/调整窗口大小的那个。或者保持 MessageBox() 模态的那个。它仅在进程和线程互操作编码(marshal)处理中有用。

所以忽略这个,这是一个极端情况。

关于c++ - WinProc() 与主消息循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34481276/

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