MDI中,如果增加一个子窗口就会在窗口菜单栏中添加一个对应的新项,我想去掉,不显示,可是我删除了这个窗口菜单栏,这些子窗口项又显示到后面一列的菜单中,到底该如何截获,才能使他们消失????
请大家帮帮忙吧,谢谢了

解决方案 »

  1.   

    一个办法是Subclass MDIClient,然后处理WM_MDIREFRESHMENU消息。
    1. 从CWnd派生一个CMyMDIClientWnd类
    2. 给CMainFrame加一个成员变量 CMyMDIClientWnd m_wndMDIClient;
    3. 在CMainFrame::OnCreate里加上 m_wndMDIClient.SubclassWindow(m_hWndMDIClient);
    4. 给CMyMDIClientWnd映射WM_MDIREFRESHMENU消息,并在消息处理时简单返回。例子代码:
    http://my.6to23.com/cigarette/qm2.zip
      

  2.   

    m_hWndMDIClient是什么?我的程序怎么说它未定义?
      

  3.   

    CMDIFrameWnd的成员变量,MFC定义的。
    class CMDIFrameWnd : public CFrameWnd
    {
       ...
    public:
       HWND m_hWndMDIClient;       // MDI Client window handle
       ...
    };