WIN32第一个窗口程序,遇到问题求助啊

IT保安 IT保安 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
经典的“win32第一个窗口”程序,我依葫芦画瓢写好之后,发现窗口关闭之后,停留在
任务管理器之中,这就代表线程实际未退出,消息循环还在继续的意思吧?

我经过仔细检查,发现是消息循环这一块有问题,我把代码显示出来:
MSG msg;
bool bRet;
while((bRet = GetMessage(&msg,hWnd,0,0)) != 0)
{
if(bRet == -1)
{
return -1;
}
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}


这段代码是我看MSDN关于GetMessage函数的介绍中,底部有这么一个 Warning Because the return value can be nonzero, zero, or -1, avoid code like this:

while (GetMessage( lpMsg, hWnd, 0, 0)) ... ,因此参照其推荐格式写的,但是却导致问题!

我将这一部分改写成
MSG Msg;
while(GetMessage(&Msg,NULL,0,0))//NULL表示接受调用线程的所有消息
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);//将消息传递给了窗口过程去处理
}


就一切正常了!对此我很费解,搞不懂,希望得到指点!
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
IT保安
C++ 语言 65,214 成员 250,514 内容