文档详情

第16章菜单.ppt

发布:2017-05-06约6.82千字共55页下载文档
文本预览下载声明
第16章 菜单 内容提要 16.1 菜单 16.1.1 编辑菜单 16.1.2 菜单消息 16.4 快捷菜单 16.1.1 编辑菜单 菜单中的每一个菜单项都由菜单项名和命令ID号两个基本要素组成。 创建菜单可以有几种方法,最简单的方法是用菜单资源编辑器进行设计。 任务:在SDI上设计主菜单“绘图”,打开该菜单选中子菜单“直线”时,工作区窗口显示出一条直线段。 步骤一:在Visual C++中,打开或创建一个MFC单文档应用程序。 建立菜单示例 打开菜单资源 展开Menu文件, 双击菜单IDR_MAINFRAME 步骤三:添加新的子菜单项。选编辑,底部可添加 添加子菜单项 双击输入名字添加,再双击打开属性窗口 步骤三:顶层菜单添加绘图菜单项,最右边输入名 点击选绘图菜单项,添加子菜单,在空白项输入 步骤四: 鼠标右击 后选属性 或双击 打开属性 为新建菜单设置唯一的ID:输入ID_DRAW_LINE 看看其他属性 popup下级菜单,prompt 属性值会显示在状态栏 点鼠标右键,可检查助记键 ALT+L(是否已有) “直线(L)”,括号中的L表示紧跟在它后面的字母“L”是助记符,这样,在程序运行过程中,就可以用Alt+L键来激活【直线】菜单。 【Prompt】框中的文本是光标处于菜单项时,状态栏显示的帮助信息 步骤六:用鼠标左键按住【绘图】菜单,可将其拖到【编辑】与【帮助】菜单中间。 利用菜单资源编辑器,我们就很轻松地创建了一个标准的Windows菜单。 做出标准的菜单,下一步该做什么? 编译运行,新加菜单项是灰白显示 建立菜单(外观及属性)小结 步骤一:在VC中打开或创建一个MFC单文档项目。 步骤二:在资源视图打开菜单资源 展开Menu文件,双击IDR_MAINFRAME 步骤三:在顶层菜单中添加子菜单项,输入名字 步骤四:打开属性窗口,设置属性(例如ID) 步骤三:添加顶层菜单项,输入名字例如【绘图】 【绘图】菜单中添加子菜单,输入名字 步骤四:打开属性窗口,设置子菜单属性 为新建菜单设置ID:输入例如ID_DRAW_LINE 步骤五:用鼠标左键拖【绘图】到想放的位置。 16.1.2 菜单消息 做出了标准菜单,下一步该做什么? 有了菜单,鼠标点击菜单(消息),如何响应? 为菜单项添加一个消息处理函数,即编写实现代码对菜单项进行响应! 菜单消息的类型 COMMAND 命令消息 UPDATE_COMMAND_UI 更新消息 (1)COMMAND消息需要用户的干预,如单击、双击等操作; (2)UPDATE_COMMAND_UI消息系统会自动进行响应,通过它可以实现对菜单项外观的动态管理。例如,设计人员可以使菜单有效、无效或给菜单项动态添加检查标记等。 可以同时设置这两种消息,但是在实际编程中,必须为每个菜单项提供有关WM_COMMAND类型消息映射接口。 为菜单项添加消息处理函数 1. 右击菜单项,选添加事件处理程序 2. 选COMMAND类型、视图类CEx01View中处理 默认函数名对应设置的ID:ID_DRAW_LINE 按“添加编辑”按钮, CEx01View.h中自动增加消息处理函数声明:afx_msg void OnDrawLine(); 在CEx01View.cpp中自动增加空的消息处理函数 void CEx01View::OnDrawLine() 16.1.3 添加消息处理代码 3. 添加消息处理代码 1) CEx01View类添加数据成员m_uType记录用户所 选菜单项, 访问方式protected, 类型unsigned int 2) 给m_uType赋值更好的方法:定义、使用一组常量const unsigned int LINE=100U; const unsigned int RECTANGLE=101U; const unsigned int CIRCLE=102U; 3) 给消息处理函数OnDrawLine()添加代码 m_uType=LINE,即选直线;再重绘窗口 4) 在绘图函数OnDraw()中添加画直线的代码 4. 消息映射 用ON_COMMAND()将菜单命令ID_DRAW_LINE与消息处理函数OnDrawLine()联系起来 5. 编译运行,点击“绘图”菜单中“直线”子菜单 菜单消息处理小结 步骤一:设置菜单消息的类型、菜单项的ID 确定COMMAND类型、函数名、ID(ID_DRAW_LINE) 步骤二:为菜单项添加消息处理函数 CEx01View.h添函数声明:afx_msg void OnDrawLine(); CEx01View.cpp中增加消息
显示全部
相似文档