1、动态加载、删除菜单:
void CMainFrame::OnAppendMenu()
{
//TODO: Add your command handler code here
Menu* pMenu = GetMenu();
Menu* pSunMenu = pMenu->GetSubMenu(4);
if (pSunMenu->GetMenuItemCount() == 4)
{
pSunMenu->AppendMenu(MF_STRING,ID_TEST_MENU,"新菜单项");
DrawMenuBar();
}
}
void CMainFrame::OnDeleteMenu()
{
// TODO: Add your command handler code here
CMenu* pMenu = GetMenu();
CMenu* pSubMenu = pMenu->GetSubMenu(4);
if (pSubMenu->GetMenuItemCount() == 5)
{
pSubMenu->DeleteMenu(4,MF_BYPOSITION);
DrawMenuBar();
}
}
void CMainFrame::OnInsertMenu()
{
// TODO: Add your command handler code here
CMenu* pMenu = GetMenu();
CMenu* pSubMenu = pMenu->GetSubMenu(4);
if (pSubMenu->GetMenuItemCount() == 4)
{
pSubMenu->InsertMenu(4,MF_BYPOSITION,ID_TEST_MENU,"新菜单项");
DrawMenuBar();
}
}
void CMainFrame::OnRemoveMenu()
{
// TODO: Add your command handler code here
CMenu* pMenu = GetMenu();
CMenu* pSubMenu = pMenu->GetSubMenu(4);
if (pSubMenu->GetMenuItemCount() == 5)
{
pSubMenu->RemoveMenu(4,MF_BYPOSITION);
DrawMenuBar();
}
}
2、显示沙漏图标:
void CWaitCursorTestView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
BeginWaitCursor();
Sleep(5000);
EndWaitCursor();
CView::OnLButtonDown(nFlags, point);
}
3、设置系统菜单
OnInitDialog():
CMenu* pMenu = GetSystemMenu(FALSE);
pMenu->RemoveMenu(SC_MOVE,MF_STRING);
pMenu->InsertMenu(0,MF_BYPOSITION,ID_TEST_MENU,"测试菜单项");
DrawMenuBar();
void CMenuTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else if (nID == ID_TEST_MENU)
{
AfxMessageBox("测试菜单项命令");
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
第二章内容本较少,比较简单的如EnableMenuItem()等,没有写出。至此第二章结束,接下来是第三章:控制栏。