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


    一般会出现如下两种情况

    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;

  • 相关阅读:
    MyBatis入门案例、增删改查
    Hibernate第三次测试错题解析
    HIbernate二级缓存
    Hibernate组件映射
    java 序列化
    圈复杂度(Cyclomatic Complexity)
    ASE加、解密
    异常Exception
    动态代理(jdk--cglib)
    java.lang.Class类
  • 原文地址:https://www.cnblogs.com/zlgxzswjy/p/4804874.html
Copyright © 2020-2023  润新知