在程序中加入了一个菜单:menu.AppendMenu(MF_STRING,WM_DESTROY,"关闭"); 
点击关闭时关闭程序,为了防止esc退出我把OnCancel()注释为空了。
menu.AppendMenu(MF_STRING,WM_CLOSE,"关闭");或者menu.AppendMenu(MF_STRING,WM_QUIT,"关闭");都不管用。

解决方案 »

  1.   

    你跟一下,收到WM_CLOSE消息了没?
      

  2.   

    不要注销掉OnCancel(),如果是想防止esc退出可重载PreTranslateMessage函数 如下if (pMsg->wParam == VK_ESCAPE)
    {
    if (MessageBox(_T("是否退出程序?"), _T("提示"),
    MB_YESNO|MB_ICONQUESTION|MB_DEFBUTTON2) == IDNO)
    {
    return TRUE;
    }
    else
    {
    CT_close(g_fd);
    }
    }
      

  3.   

    看样子是在Dialog程序中添加菜单,如果这样的话,需要在响应WM_CLOSE的消息函数中,调用EndDialog
      

  4.   

    不好意思,举例的代码未提示清楚, CT_close(g_fd)是我的程序中的一个函数,esle 就是选择确定退出后要执行的
      

  5.   

    点击菜单响应的是 WM_COMMAND 消息,并不是将指定的消息发送到窗口。