SystemMenu是在应用程序的Icon处点击鼠标左,右键时弹出的菜单。这个菜单不能再资源编辑器里进行可视化编辑。所以要想添加Item就要手工加入代码,添加消息映射。
HMENU pSysMenu = ::GetSystemMenu(m_pMainWnd->GetSafeHwnd(), FALSE); if (pSysMenu) { ::InsertMenu(pSysMenu, 0, MF_BYPOSITION | MF_STRING, ID_SHOW_MESSAGE1,
"Show Message 1"); ::InsertMenu(pSysMenu, 1, MF_BYPOSITION | MF_STRING, ID_SHOW_MESSAGE2,
"Show Message 2"); ::InsertMenu(pSysMenu, 2, MF_BYPOSITION | MF_SEPARATOR, 0, ""); } 上面的添加代码可以放到app的实例化函数中。
ON_COMMAND(ID_SHOW_MESSAGE1, &CMainFrame::OnShowMessage1)
ON_COMMAND(ID_SHOW_MESSAGE2, &CMainFrame::OnShowMessage2)
添加消息映射
void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
{
switch (nID)
{
case ID_SHOW_MESSAGE1 :
case ID_SHOW_MESSAGE2 :
PostMessage(WM_COMMAND, nID, 0);
break;
default:
// CFrameWnd::OnSysCommand(nID,lParam);
CWnd::OnSysCommand(nID,lParam);
}
}
重载OnSystemCommand来处理新加的Item事件。
演示代码