探究MFC之Dialog系统菜单添加
2017-01-13 18:03
387 查看
探究MFC之Dialog系统菜单添加
本文描述给Dialog增加系统菜单;单击对话框左上角menu弹出的菜单,我们称为该对话框的系统菜单。启动VisualC++6.0,New->MFC AppWizard(exe) 创建Dialog示例程序MFC01;
在ResourceView->String Table添加菜单项字符串,参考下面斜体项目;
ID | Value | Caption |
---|---|---|
IDS_ABOUTBOX | 101 | MFC01 のバージョン情報(&A)… |
IDS_HELLOMENU | 102 | Hello |
IDS_HELLOMSG | 103 | Hello World!!! |
//{{NO_DEPENDENCIES}} // Microsoft Developer Studio generated include file. // Used by MFC01.rc // #define IDM_ABOUTBOX 0x0010 #define IDM_HELLOBOX 0x0020 #define IDD_ABOUTBOX 100 #define IDS_ABOUTBOX 101 #define IDD_MFC01_DIALOG 102 #define IDS_HELLOMENU 102 #define IDS_HELLOMSG 103 #define IDR_MAINFRAME 128 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 129 #define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_CONTROL_VALUE 1000 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif
在Dialog的初始化函数中,给系统菜单添加新的菜单项;
///////////////////////////////////////////////////////////////////////////// // CMFC01Dlg message handlers BOOL CMFC01Dlg::OnInitDialog() { CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range. ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); //验证菜单消息资源IDM_HELLOBOX有效 ASSERT((IDM_HELLOBOX & 0xFFF0) == IDM_HELLOBOX); ASSERT(IDM_HELLOBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { CString strAboutMenu; strAboutMenu.LoadString(IDS_ABOUTBOX); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } //添加菜单项Hello到系统菜单中 CString strHelloMenu; strHelloMenu.LoadString(IDS_HELLOMENU); if (!strHelloMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_HELLOBOX, strHelloMenu); } } // Set the icon for this dialog. The framework does this automatically // when the application's main window is not a dialog SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, FALSE); // Set small icon // TODO: Add extra initialization here return TRUE; // return TRUE unless you set the focus to a control }
设置新添加菜单项Hello的消息响应
void CMFC01Dlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else if ((nID & 0xFFF0) == IDM_HELLOBOX)//Hello菜单消息响应 { AfxMessageBox(IDS_HELLOMSG); } else { CDialog::OnSysCommand(nID, lParam); } }
相关文章推荐
- VC 系统菜单打勾,MFC Dialog SYS menu check CheckMenuItem
- C#+MFC添加修改windows窗口系统菜单(自定义系统菜单)
- mfc添加系统菜单
- mfc 小程序---在系统菜单中添加菜单项
- VC++ MFC 系统菜单添加子菜单 CMENU submenu GetSystemMenu
- mfc 小程序---在系统菜单中添加菜单项
- MFC中Dialog中添加菜单
- 如何添加自定义系统菜单 - C++ & MFC
- mfc里为对话框程序中的Dialog添加菜单
- 如何添加自定义系统菜单
- 使用 Linux 系统调用的内核命令--探究 SCI 并添加自己的调用
- MFC的Dialog中为PPC创建菜单
- 关于windows mobile的MFC DIALOG模式下菜单问题
- MFC如何在自定义对话框中添加系统图标?
- 菜鸟学习OGRE和天龙八部之十五: 添加MFC的菜单,来控制场景的显示
- 在系统菜单中添加自定义菜单项
- API实现添加系统托盘图标及其菜单
- Bcdedit添加VHD(虚拟磁盘)系统启动菜单
- 系统菜单中添加选项
- 系统栏添加右键菜单: