版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、响应菜单消息和控制菜单状态响应菜单消息和控制菜单状态使用快捷键使用快捷键快捷菜单编程快捷菜单编程实现动态菜单实现动态菜单工具条编程工具条编程状态条编程状态条编程 通过选择菜单分别在视中画矩形和椭圆,通过另外两个菜单项控制“矩形菜单项的状态,在菜单前显示“”表示该菜单项当前被选中。还可以通过快捷键画矩形和椭圆。 第3章 菜单与控件条第3章 菜单与控件条3.1 菜单 Caption ID Prompt 画图Pop-up 选中)矩形(&R)tCtrl+R ID_DRAW_RECT 视中画矩形 椭圆(&C)tAlt+C ID_DRAW_CIRCLE 在视中画椭圆第3章 菜单与控件条3.
2、1 菜单 在帮助子菜单后面再添加一个子菜单“画图”,包括两个菜单项。第3章 菜单与控件条3.1 菜单void CMenuTestView:OnDrawRect() CClientDC dc(this);dc.Rectangle(50,50,200,150); void CMenuTestView:OnDrawCircle() CClientDC dc(this);dc.Ellipse(250,50,400,150);第3章 菜单与控件条3.1 菜单第3章 菜单与控件条3.1 菜单1. 在画图菜单中再添加三个菜单项Caption ID Prompt Separator - -允许画矩形 ID_D
3、RAW_ENABLE - 禁止画矩形 ID_DRAW_DISABLE -2. 在视类中添加一个记录当前“矩形菜单项状态的变量BOOL m_Enable;并在构造函数中初始化数据成员m_Enable m_ Enable =TRUE;第3章 菜单与控件条3.1 菜单void CMenuTestView:OnDrawEnable() m_Enable = TRUE;void CMenuTestView:OnDrawDisable() m_Enable = FALSE;第3章 菜单与控件条3.1 菜单void CMenuTestView:OnUpdateDrawRect(CCmdUI* pCmdUI)
4、 pCmdUI-Enable(m_Enable);第3章 菜单与控件条3.1 菜单void CMenuTestView:OnUpdateDrawEnable(CCmdUI* pCmdUI) pCmdUI-SetCheck(m_Enable ? 1:0);void CMenuTestView:OnUpdateDrawDisable(CCmdUI* pCmdUI) pCmdUI-SetCheck(m_Enable ? 0:1);第3章 菜单与控件条3.1 菜单 上一节程序的基础上,在视窗口内单击鼠标右键,弹出一个快捷菜单,菜单中包含“编辑矩形坐标和“编辑椭圆坐标”,当选择“编辑矩形坐标时,弹出一个
5、对话框,允许输入矩形左上角坐标和右下角坐标,当选择“编辑椭圆坐标时,也弹出一个对话框,用于输入椭圆外接矩形左上角坐标和右下角坐标。 第3章 菜单与控件条第3章 菜单与控件条3.2 快捷菜单再添加一个菜单资源(IDR_POPUP_MENU )子菜单:Popup1 选中Pop-up Caption ID 编辑矩形坐标 ID_EDIT_RECT 编辑椭圆坐标 ID_EDIT_CIRCLE 选择与其关联的类为CMainFrame。第3章 菜单与控件条3.2 快捷菜单第3章 菜单与控件条3.2 快捷菜单函数:void CMainFrame:OnContextMenu(CWnd* pWnd, CPoint
6、 point) CMenu: LoadMenu GetSubMenu TrackPopupMenu TPM_CENTERALIGN弹出式菜单的水平中心为point.x。TPM_LEFTALIGN弹出式菜单的左边位于point.x。TPM_RIGHTALIGN弹出式菜单的右边位于point.x。TPM_LEFTBUTTON 弹出式菜单只跟踪鼠标左键。TPM_RIGHTBUTTON 弹出式菜单也跟踪鼠标右键。第3章 菜单与控件条3.2 快捷菜单 编辑框 IDC_EDIT_X2 编辑框 IDC_EDIT_Y2 按钮控件 IDOK 确定 按钮控件 IDCANCEL 取消第3章 菜单与控件条3.2 快捷
7、菜单第3章 菜单与控件条3.2 快捷菜单第3章 菜单与控件条3.2 快捷菜单第3章 菜单与控件条3.2 快捷菜单dc.Ellipse(m_nCircleLeft, m_nCircleTop,m_nCircleRight, m_nCircleBottom); 第3章 菜单与控件条3.2 快捷菜单第3章 菜单与控件条3.2 快捷菜单 在上一节程序的基础上,在快捷菜单中再添加两个菜单项,当选择“添加椭圆控制菜单时,在画图菜单中的最后添加两个菜单项“允许画椭圆和“禁止画椭圆”。通过这两个菜单项控制菜单项“椭圆的状态。当选择“删除椭圆控制菜单时,则删除这两个菜单项。第3章 菜单与控件条第3章 菜单与控件
8、条3.3 动态菜单打开上节编辑的菜单资源IDR_POPUP_MENU,为其再增加两个菜单项如下:ID Caption SeparatorID_ADD_MENU 增加椭圆控制菜单ID_DELETE_MENU删除椭圆控制菜单第3章 菜单与控件条3.3 动态菜单第3章 菜单与控件条3.3 动态菜单函数:void CMainFrame:OnAddMenu() 函数:void CMainFrame:OnDeleteMenu() CWind:GetMenu CMenu: GetMenuItemCount() GetSubMenu() GetMenuItemID() DeleteMenu() AppendM
9、enu() 第3章 菜单与控件条3.3 动态菜单第3章 菜单与控件条3.3 动态菜单第3章 菜单与控件条3.3 动态菜单第3章 菜单与控件条3.3 动态菜单 在上一节的基础上,加入另一个工具条。工具条上有三个按钮和一个组合框,三个按钮的功能分别是画矩形、画椭圆和画直线,当选择组合框中的某项时,弹出一个信息框。 第3章 菜单与控件条第3章 菜单与控件条3.4 工具条添加工具条资源:IDR_MYTOOLBAR 在工具条上添加四个工具按扭其ID分别是:ID_DRAW_RECT, ID_DRAW_CIRCLEID_DRAW_LINE, ID_COMBOBOX第3章 菜单与控件条3.4 工具条第3章 菜
10、单与控件条3.4 工具条(2) 在类CMainFrame的OnCreate函数中添加代码函数:OnCreate()(3) 添加工具条按钮的消息响应函数由于矩形和椭圆按钮的ID和菜单项相同,具有相同的功能,只需添加画线按钮的消息响应函数:OnDrawLine()第3章 菜单与控件条3.4 工具条(2) 在类CMainFrame的OnCreate函数中添加代码函数:OnCreate()第3章 菜单与控件条3.4 工具条(1)在类CMainFrame的消息响应函数的声明位置添加消息响应函数的原形 afx_msg void OnSelchangeCombo();(2)在MainFrm.cpp的消息映射
11、宏添加消息映射宏:ON_CBN_SELCHANGE(ID_COMBOBOX,OnSelchangeCombo)(3)在MainFrm.cpp中添加函数定义:函数:void CMainFrame:OnSelchangeCombo() 第3章 菜单与控件条3.4 工具条 在上一节的基础上,在状态条上添加两个状态信息,用来指示鼠标在视图窗口中的位置。同时加入两个状态指示器,分别用来显示键盘上的Ctrl键和Shift键是否被按下 。 第3章 菜单与控件条第3章 菜单与控件条3.5 状态条static UINT indicators =ID_SEPARATOR, / status line indica
12、torID_SEPARATOR, /显示x坐标ID_SEPARATOR, /显示y坐标ID_INDICATOR_CTRL, /显示Ctrl键的状态ID_INDICATOR_SHIFT, /显示Shift键的状态ID_INDICATOR_CAPS,ID_INDICATOR_NUM,ID_INDICATOR_SCRL,;第3章 菜单与控件条3.5 状态条插入两个字符串资源ID CaptionID_INDICATOR_CTRL Ctrl ID_INDICATOR_SHIFT Shift。 第3章 菜单与控件条3.5 状态条 选择View菜单下的Resource Symbols菜单项,打开Resour
13、ce Symbol对话框,添加资源号IDC_STATUSBAR,Value取默认值。 在创建状态条代码的后面添加以下代码:m_wndStatusBar.SetPaneInfo(1,IDC_STATUSBAR,SBPS_POPOUT,50);m_wndStatusBar.SetPaneInfo(2,IDC_STATUSBAR,SBPS_POPOUT,50);第3章 菜单与控件条3.5 状态条 参数:1:序号 2:状态条资源号3:风格4:宽度 在CMainFrame类中加入消息响应函数的原形,并将成员m_wndStatusBar改成公用类型public:CStatusBar m_wndStatus
14、Bar;afx_msg void OnUpdateKeyCtrl(CCmdUI *pCmdUI);afx_msg void OnUpdateKeyShift(CCmdUI *pCmdUI);2. 在MainFrm.cpp消息映射宏的定义处添加两消息映射宏 ON_UPDATE_COMMAND_UI(ID_INDICATOR_CTRL,OnUpdateKeyCtrl)ON_UPDATE_COMMAND_UI(ID_INDICATOR_SHIFT,OnUpdateKeyShift)第3章 菜单与控件条3.5 状态条3. 在MainFrm.cpp中添加消息映射函数体void CMainFrame:OnUpdateKeyCtrl(CCmdUI *pCmdUI)pCmdUI-Enable(:GetKeyS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电解车间行政工作年度总结
- 客户投诉与8D闭环
- 2026年新高考全国乙卷化学易错点冲刺模拟压轴题含解析
- 小学信息科技人教版(新教材)四年级全一册第2单元 用编码描绘世界 各课教学设计
- 小学6年级暑假45天全方位规划(含学习+休息+实践)
- 金融强国防范金融风险
- 宝剑工操作管理测试考核试卷含答案
- 民用阀门及管道连接件制作工测试验证水平考核试卷含答案
- 调配香精配制工岗前岗位水平考核试卷含答案
- 钠离子电池新进展 (课件)
- 花束包装课件制作
- 工程质保期内维修方案(3篇)
- 2025年四川省法院公开招聘聘用制审判辅助人员考试(面试)历年参考题库及答案
- 老年高血压患者的康复护理
- 2025年高考江苏卷物理真题(原卷版)
- 2024广西金融职业技术学院辅导员招聘笔试真题
- 山东省济南市历城区2025-2026学年七年级下学期期中考试英语试卷
- 【物化生 山东卷】2025年山东省高考招生统一考试高考真题物理+化学+生物试卷(真题+答案)
- 2025年广西专业技术人员继续教育公需科目(二)答案
- T/ZHCA 019-2022化妆品去屑功效测试方法
- T/CRIA 29009-2023汽车轮胎径向刚性、扭转刚性和包络刚性试验方法
评论
0/150
提交评论