为了操作系统菜单,首先需要获取一个系统菜单的指针 可以通过GetSystemMenu 实现,然后利用菜单指针添加一个菜单项,最后在对话框的OnSysCommand方法中处理菜单项的命令;
CMenu* GetSystemMenu( BOOL bRevert ) const; bRevert :确定方法执行的动作,如果为FALSE,方法返回当前正在使用的系统菜单;如果为TRUE,该方法将重新设置系统菜单到默认状态,并且方法返回值不可用。
建立一个对话框工程;定义一个菜单指针m_pMenu,用于指向系统菜单;在对话框OnInitDialog函数中,
m_pMenu->GetSystemMenu(FALSE);
m_pMenu->AppendMenu(MF_STRING,IDI_PECULIARMENU,"系统菜单");
然后在OnSysCommand方法中添加消息处理代码:
void CPeculiarMenuDlg::OnSysCommand(UINT nID,LPARAM lParam)
{
if(nID==IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else if(nID==IDI_PECULIARMENU)
{
MessageBox("HELLO","call",MB_OK|MB_ICONINFORMATION);
}
else {
CDialog::OnSysCommand(nID,lParam);
}
}
禁用系统菜单可以用m_pMenu->EnableMenuItem()函数;
UINT EnableMenuItem( UINT nIDEnableItem, UINT nEnable );
其中MF_ENABLED 激活菜单项;
MF_DISABLED 禁止菜单项;
MF_BYPOSITION表明以位置标识菜单项;
MF_GRAYED 禁止使其变灰;