如何在mfc中动态添加子菜单

时间:2015-02-24 11:41:49

标签: mfc

我已经使用资源编辑器在我的Windows程序中添加了一个菜单现在我想在某些特定条件下添加一个子菜单。 下面是我的代码。

这是我的 Menu.h 文件

包括

class CmainWn:public CFrameWnd

{

public:CmainWn();

DECLARE_MESSAGE_MAP()

afx_msg void OnAB();

};

类CApp:public CWinApp

{

public:BOOL InitInstance();

};

这是我的 Menu.cpp

包括" Menu.h"

包括" RESOURCE.H"

CmainWn :: CmainWn()

{

Create(NULL,"Menu Testing",WS_OVERLAPPEDWINDOW,rectDefault,NULL,(LPCTSTR)IDR_MENU1);

}

BOOL CApp :: InitInstance()

{

m_pMainWnd=new CmainWn();

m_pMainWnd->ShowWindow(m_nCmdShow);

m_pMainWnd->UpdateWindow();

return true;

}

void CmainWn :: OnAB()

{

AfxMessageBox("Hello");

}

BEGIN_MESSAGE_MAP(CmainWn,CFrameWnd的)

ON_COMMAND(ID_A_B, &CmainWn::OnAB)

END_MESSAGE_MAP()

CApp App;

正如您所看到的,我创建了名为A的主菜单和一个名为B的子菜单。 我想在B下动态添加一个菜单。怎么做?

1 个答案:

答案 0 :(得分:-2)

必须添加到Windows资源文件(projectname.rc)的示例代码

IDR_MENU1 MENU 
BEGIN
      POPUP "Main menu"
       BEGIN
           MENUITEM "Menu Item 1", ID_WINDOWS_TEST
           POPUP "Sub Menu"
        BEGIN
            MENUITEM "Sub Menu item 1",ID_WIN_TEXT
        END
    END
END 

在资源视图中查看此内容会显示如下内容 enter image description here