menu.CreatePopupMenu();
menu.AppendMenu(MF_STRING,WM_DESTROY,"关闭"); 
上面程序可以通过点"关闭"菜单来关闭窗口,为什么窗口未收到WM_CLOSE或WM_DESTROY消息,但窗口却关闭了?
想要实现"关闭"菜单来关闭窗口,并且结束应用,怎么办?
现在的问题是窗体的ONCLOSE()和ONDESTORY()中都有ExitProcess(0),但却未执行.

解决方案 »

  1.   

    BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );你将WM_DESTROY作为菜单ID,这个用法值得怀疑?
    这是一个ID(如ID_MENU1),用这个ID建立一个消息映射,如下:
    ON_COMMAND(ID_MENU1, OnMenu1)
    放在Message Map中,并建立相应消息处理函数,如下:
    void CAsfdpadfDlg::OnMenu1() 
    {
    // TODO: Add your command handler code here
    ExitProcess(0);
    }
    在该消息中添加处理代码。
      

  2.   

    你只是加了一个菜单项,但是还没有消息处理。
    VC里面加消息循环我不清楚,不过如果用SDK,可以看看。
    http://vip.6to23.com/NowCan1/tech/sysmenu.htm
    http://vip.6to23.com/NowCan1/tech/rmt_sysmenu.htm
    http://nowcan.yeah.net
      

  3.   

    其实你可以这样做:
    menu.CreatePopupMenu();
    menu.AppendMenu(MF_STRING,WM_YOUDEFINED,"关闭"); 
    然后处理自定义消息WM_YOUDEFINED就行了。