首先强调一点, Menu是归属在MainFrame中的。
所以动态创建菜单需要在MainFrame中完成,当然也不是必须的。 只是这样比较方便而已。
在CMainFrame的OnCreate事件处理函数中添加以下代码:
CMenu menu;
menu.CreatePopupMenu();
GetMenu()->AppendMenuW(MF_POPUP,(UINT) menu.m_hMenu, _T("VC++"));
menu.AppendMenuW(MF_STRING, 111, _T("Hello"));
menu.AppendMenuW(MF_STRING, 112, _T("World"));
menu.Detach();
//将菜单装配到菜单栏,解除与CMenu对象的绑定。
//或者将CMenu的对象声明到CMainFrame的头文件中,否则会因为
//CMainFrame::OnCreate方法执行结束,CMenu对象被销毁,而产生程序错误。
因为菜单为动态添加,所以这些子菜单的事件处理程序需要自己手动添加。
1. 定义子菜单ID。 在CMainFrame的头文件中,定义一个宏。
#define IDM_HELLO 111
2. 在头文件中,声明事件处理函数:
afx_msg void OnHello();
3, 在MainFrame源文件的事件映射中,添加菜单与事件处理函数的映射:
ON_COMMAND(IDM_HELLO, &CMainFrame::OnHello)
4. 在MainFrame源文件,定义事件处理函数
void CMainFrame::OnHello()
{
MessageBox(_T("Hello"));
}
分享到:
相关推荐
"VC++深入详解学习笔记" VC++是微软公司开发的一种基于C++的编程语言,广泛应用于Windows平台的软件开发中。本学习笔记涵盖了VC++的基础知识、MFC程序框架、消息映射机制、DC的获取、菜单编程、对话框编程、图形...
### VC++深入详解学习笔记知识点概述 #### 一、Windows程序运行原理及程序编写流程 - **窗口产生过程**:Windows程序的核心在于窗口的管理和消息处理。窗口是应用程序与用户交互的基本单位,它包含了客户区(用户...
**VC++学习笔记总结** VC++,全称Visual C++,是Microsoft公司开发的一款集成开发环境,主要用于编写基于Windows操作系统的应用程序。它结合了C++编程语言的强大功能和微软的Visual Studio IDE(集成开发环境)的...
综上所述,孙鑫视频VC++深入详解学习笔记覆盖了从基础到高级的多个方面,不仅介绍了C++语言的基础知识,还深入探讨了在Windows环境下利用MFC进行应用程序开发的具体实践和技术细节。这对于希望深入了解Windows编程的...
### ACE学习笔记总结:构建与配置详解 #### ACE概述与构建流程 ACE(Adaptive Communication Environment)是一款开源的中间件框架,专为高性能网络通信应用设计。它支持跨平台的实时通信,具备丰富的网络功能,如...
### DuiLib学习笔记知识点详解 #### 一、DuiLib简介及环境配置 DuiLib是一个基于Windows平台的UI库,它支持多种现代UI元素的设计,并且具有良好的跨平台特性。通过使用DuiLib,开发者可以快速地构建出美观且功能...
### VC技术内幕学习笔记知识点详解 #### 一、VC++技术内幕概述 - **书籍版本**: 使用的是潘爱民和王国印翻译的《VC++技术内幕》第四版,该版本被认为是最优秀的翻译版本之一。 - **学习背景**: 学习者在开始撰写...