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);
}