第1步:打开IDE,新建一个基于对话框的MFC应用程序
第2步:在对话框类中,添加一个成员变量: CMenu *m_pMenu;//菜单类型的指针
第3步:在OnInitDialog()函数中,添加语句 :
m_pMenu = GetSystemMenu(FALSE); //获取当前系统菜单指针
m_pMenu->AppendMenu(MF_STRING,IDI_PECULIARMENU,"自定义菜单项");//添加菜单,类型,ID,显示的名称
第4步:在头文件"Resource.h"中添加一个宏定义: #define IDI_PECULIARMENU 103 //添加标识符宏定义
第5步:处理菜单项的命令响应消息,在对话框的OnSysCommand方法中添加消息处理代码:
void CMy001Dlg::OnSysCommand(UINT nID, LPARAM lParam) //判断用户点击的是哪个菜单
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX) //以模态方式弹出关于对话框
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else if(nID == IDI_PECULIARMENU) //用户添加的菜单项
{
MessageBox("自定义的菜单","提示"); //此处仅弹出提示对话框,可自定义处理代码
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
学习笔记:
GetSystemMenu
参数:如果bRevert为FALSE,返回当前系统菜单的拷贝的句柄,可被修改、添加。
如果为TRUE,则恢复当前系统菜单到缺省默认状态,之前修改的均被销毁,返回值为NULL。
窗口菜单项发送WM_SYSCOMMAND消息,然后被对话框中的OnSysCommand()中进行处理。
函数中是if else语句,可替换为switch语句进行处理。