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事件。
演示代码
SystemMenu自定义教程
本文介绍如何通过手工加入代码的方式来自定义SystemMenu,包括插入菜单项及处理相应事件的方法。适用于希望了解并实现应用程序图标处点击鼠标左、右键时弹出特定菜单功能的开发者。
4005

被折叠的 条评论
为什么被折叠?



