C++ mfc单文档(SDI)添加菜单

1 新建mfc单文档项目MenuTest

2 在Resource.h里面添加如下定义

#define ID_MENU_1 10000
#define ID_MENU_2 10001
#define ID_MENU_3 10002
#define ID_MENU_4 10003
#define ID_MENU_5 10004

3 修改显示的菜单

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
		return -1;

	CMenu *pFrameMenu = GetMenu();
	if (pFrameMenu!=NULL)
	{
		CMenu* pNewPopMenu = new CMenu;
		pNewPopMenu->CreatePopupMenu();
		pNewPopMenu->AppendMenu(MF_STRING, ID_MENU_1, "本地磁盘(C:)");
		pNewPopMenu->AppendMenu(MF_STRING, ID_MENU_2, "本地磁盘(D:)");
		pFrameMenu->InsertMenuA(2, MF_BYPOSITION | MF_POPUP, (UINT)pNewPopMenu->m_hMenu, "我的电脑");

		CMenu* pNewChildPopMenu = new CMenu;
		pNewChildPopMenu->CreatePopupMenu();
		pNewChildPopMenu->AppendMenuA(MF_STRING, ID_MENU_3, "VC++学习第一讲.txt");
		pNewChildPopMenu->AppendMenuA(MF_STRING, ID_MENU_4, "VC++学习第二讲.txt");
		pNewChildPopMenu->AppendMenuA(MF_STRING, ID_MENU_5, "VC++学习第三讲.txt");
		pNewPopMenu->AppendMenuA(MF_POPUP, (UINT)pNewChildPopMenu->m_hMenu, "本地磁盘(E:)");
	}


	return 0;
}

4 在CMainFrame里面添加消息处理函数声明

afx_msg void OnCommandMenu1();
	afx_msg void OnCommandMenu2();
	afx_msg void OnCommandMenu3();
	afx_msg void OnCommandMenu4();

5 添加菜单的消息映射

ON_COMMAND(ID_MENU_1, OnCommandMenu1)
	ON_COMMAND(ID_MENU_2, OnCommandMenu2)
	ON_COMMAND(ID_MENU_3, OnCommandMenu3)
	ON_COMMAND(ID_MENU_4, OnCommandMenu4)

6 实现消息处理函数

void CMainFrame::OnCommandMenu1()
{
	CString strMenuItem;
	CMenu* pFrameMenu = GetMenu();
	CMenu* pSubMenu2 = pFrameMenu->GetSubMenu(2);
	pSubMenu2->GetMenuStringA(0, strMenuItem, MF_BYPOSITION | MF_STRING);
	AfxMessageBox(strMenuItem);
}

void CMainFrame::OnCommandMenu2()
{
	AfxMessageBox("本地磁盘(D:)");
}

void CMainFrame::OnCommandMenu3()
{
	CString strMenuItem;
	CMenu* pFrameMenu = GetMenu();
	CMenu* pSubMainMenu = pFrameMenu->GetSubMenu(2);
	CMenu* pSubMenu = pSubMainMenu->GetSubMenu(2);
	pSubMenu->GetMenuStringA(0, strMenuItem, MF_BYPOSITION | MF_STRING);
	AfxMessageBox(strMenuItem);
}

void CMainFrame::OnCommandMenu4()
{
	AfxMessageBox("VC++学习第2讲.txt");
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值