首页 > Windows开发 > 详细

windows编程中关于“关闭窗口无法退出进程”的解决方法

时间:2015-09-13 14:33:09      阅读:302      评论:0      收藏:0      [点我收藏+]

一般会出现如下两种情况

1、WinMain函数中,最后阶段接收消息队列循环中,调用的GetMessage函数参数提供错误
如:

while (GetMessage(&msg,hwnd, 0, 0))  
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }

这个错误往往是由于程序员疏忽大意造成的,个别编译器使用时会有自动补全(提示)功能,会提示GetMessage函数的第二个参数是一个HWND型的参数,按照习惯,容易直接写成hwnd,这是不对的,一般情况下,第二个参数会置为空,即NULL;

2、消息循环本身出现逻辑错误
如:

 while (TRUE) 
 { 
  if(GetMessage (&msg, NULL, 0, 0)) 
  { 
if(msg.message==WM_QUIT) { break; } 
  TranslateMessage (&msg) ; 
DispatchMessage (&msg) ;
  }
 }

while循环的判断部分始终为真,程序即使接受退出消息,也不会退出进程,这是逻辑错误,也是编程习惯的问题,一般建议直接将GetMessage函数的返回值作为条件语句放入while中,以减少错误。

所以,正确的写法应该写为:

while (GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return &msg.wParam;

 

windows编程中关于“关闭窗口无法退出进程”的解决方法

原文:http://www.cnblogs.com/zlgxzswjy/p/4804874.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!