gpt4 book ai didi

c++ - 模态消息循环中的 WM_CLOSE

转载 作者:可可西里 更新时间:2023-11-01 10:08:40 25 4
gpt4 key购买 nike

我正在为自定义对话框使用特殊的消息循环。当对话框打开并且窗口关闭时,我想达到下面的第二个 if(msg.message == WM_CLOSE)。

for(;;)
{
if(PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE))
{
if(msg.message == WM_CLOSE)
{
GetMessage(&msg, 0, 0, 0);
break;
}

else
{
if(GetMessage(&msg, 0, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

if(msg.message == msgEnd)
break;
}
}

问题是此 if 中的代码从未达到。我尝试用另一条消息替换 WM_CLOSE 以查看循环是否是问题所在,但另一条消息工作正常。怎么了?

最佳答案

好像是发送了WM_CLOSE,另外一条消息发布了。

GetMessagePeekMessage 仅对发布的消息(使用 PostMessage 发布的消息)进行操作。如果一条消息不是发布而是通过SendMessage发送,它会立即在PeekMessageGetMessage中处理,所以你不能得到MSG 为它构造。

关于c++ - 模态消息循环中的 WM_CLOSE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7092069/

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