技术要点:
为了操作系统菜单,先要获取系统菜单指针,可以通过GetSystemMenu函数实现,然后利用菜单指针添加一个菜单项,最后在对话框OnSysCommand方法中处理菜单项的命令。
GetSystemMenu方法用于获取一个系统菜单的指针,语法如下:
CMenu* GetSystemMenu(BOOL bRect);
bRect:FALSE时,该方法返回当前正在使用的系统菜单;TRUE时,该方法将重新设置系统菜单到默认状态,并且方法返回值不可用。
实现过程:
(1)新建一个基于对话框的应用程序
(2)在对话框类中定义一个菜单指针m_pMenu,用于指向系统菜单、
(3)主要程序代码。
在对话框初始化时,获取系统菜单指针,向系统菜单中添加菜单项,代码如下:
m_pMenu=GetSystemMenu(FALSE);
m_pMenu->AppendMenu(MF_STRING,IDI_PECULIARMENU,"系统菜单");
在对话框的OnSysCommand方法中添加消息处理代码:
else if(nID==IDI_PECULIARMENU)
{
MessageBox("系统菜单","提示",MB_OK|MB_ICONINFORMATION);
}
执行结果:
注意:这里图标和背景都有所改变,因为还进行其他操作:
1、在构造函数中,装载了左上角的新图标。
m_hIcon = AfxGetApp()->LoadIcon(IDI_MAINMENU);
2、在OnPaint()函数中,增加了添加背景的代码,如下:
CDC* m_dc = this->GetDC();
CDC m_memdc;
m_memdc.CreateCompatibleDC(m_dc);
CBitmap m_bitmap;
m_bitmap.LoadBitmap(IDB_MAIN);
m_memdc.SelectObject(&m_bitmap);
m_dc->BitBlt(0,0,800,700,&m_memdc,0,0,SRCCOPY);
m_bitmap.DeleteObject();
001在系统菜单中添加菜单项