C++ SDI菜单的使用

1 新建SDI应用程序

2 在Resource.h里面添加菜单ID

#define ID_MENU_1 16700
#define ID_MENU_2 16701
#define ID_MENU_3 16702
#define ID_MENU_4 16703

3 在CMainFrame::OnCreate()的函数里面添加下面代码

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

		CMenu* pNewChildPopMenu = new CMenu();
		pNewChildPopMenu->CreatePopupMenu();
		pNewChildPopMenu->AppendMenuW(MF_STRING, ID_MENU_3, _T("VC++学习第1讲"));
		pNewChildPopMenu->AppendMenuW(MF_STRING, ID_MENU_4, _T("VC++学习第2讲"));
		pNewPopMenu->AppendMenuW(MF_POPUP, (UINT)pNewChildPopMenu->m_hMenu, _T("本地磁盘E:"));
	
	}

4 在MainFrame.h里面添加消息处理函数

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

5 在MainFrame.cpp里面添加消息映射

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)
	ON_WM_CREATE()

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

6 实现消息处理函数

void CMainFrame::OnCommandMenu1()
{
	// TODO: 在此处添加实现代码.
	CString strMenuItem;
	CMenu* pFrameMenu = GetMenu();
	CMenu* pSubMenu2 = pFrameMenu->GetSubMenu(2);
	pSubMenu2->GetMenuStringW(0, strMenuItem, MF_BYPOSITION | MF_STRING);
	AfxMessageBox(strMenuItem);
}


void CMainFrame::OnCommandMenu2()
{
	// TODO: 在此处添加实现代码.
	CString strMenuItem;
	CMenu* pFrameMenu = GetMenu();
	CMenu* pSubMenu2 = pFrameMenu->GetSubMenu(2);
	pSubMenu2->GetMenuStringW(1, strMenuItem, MF_BYPOSITION | MF_STRING);
	AfxMessageBox(strMenuItem);
}


void CMainFrame::OnCommandMenu3()
{
	// TODO: 在此处添加实现代码.
	CString strMenuItem;
	CMenu* pFrameMenu = GetMenu();
	CMenu* pSubMainMenu = pFrameMenu->GetSubMenu(2);

	CMenu* pSubMenu = pSubMainMenu->GetSubMenu(2);
	pSubMenu->GetMenuStringW(0, strMenuItem, MF_BYPOSITION | MF_STRING);
	AfxMessageBox(strMenuItem);
	
}


void CMainFrame::OnCommandMenu4()
{
	// TODO: 在此处添加实现代码.
	// TODO: 在此处添加实现代码.
	CString strMenuItem;
	CMenu* pFrameMenu = GetMenu();
	CMenu* pSubMainMenu = pFrameMenu->GetSubMenu(2);

	CMenu* pSubMenu = pSubMainMenu->GetSubMenu(2);
	pSubMenu->GetMenuStringW(1, strMenuItem, MF_BYPOSITION | MF_STRING);
	AfxMessageBox(strMenuItem);

}

猜你喜欢

转载自blog.csdn.net/dxm809/article/details/113844706