《快捷键和控制条》ppt课件

上传人:tia****nde 文档编号:69240953 上传时间:2019-01-13 格式:PPT 页数:77 大小:645.81KB
返回 下载 相关 举报
《快捷键和控制条》ppt课件_第1页
第1页 / 共77页
《快捷键和控制条》ppt课件_第2页
第2页 / 共77页
《快捷键和控制条》ppt课件_第3页
第3页 / 共77页
《快捷键和控制条》ppt课件_第4页
第4页 / 共77页
《快捷键和控制条》ppt课件_第5页
第5页 / 共77页
点击查看更多>>
资源描述

《《快捷键和控制条》ppt课件》由会员分享,可在线阅读,更多相关《《快捷键和控制条》ppt课件(77页珍藏版)》请在金锄头文库上搜索。

1、第4章 菜单、快捷键和控制条,内容摘要: 菜单 快捷菜单 动态生成菜单 工具条 状态条,返回目录,菜单基础知识,Windows应用程序中除了客户区外还有非客户区。非客户区包括窗口的边框、标题栏、菜单栏、工具栏、状态栏和滚动条。其中菜单栏 、工具栏和状态栏是用户与应用程序进行交互的重要工具。,菜 单,几乎所用的Windows应用程序都会使用到菜单,它为用户提供了操作应用程序需要的命令,是应用程序中可操作命令的集合。菜单分为两类:一类是依附于框架窗口的一般菜单,包括主菜单和子菜单。,菜 单,主菜单是最高层的菜单,子菜单是从主菜单下拉出的菜单,其位置都是固定的;另一类是弹出式菜单,也称为快捷菜单,是

2、单击鼠标右键后,在光标位置出现的浮动式菜单。 添加新菜单项 编辑菜单项的属性,菜 单,删除菜单项 添加菜单消息处理函数 启用和禁用菜单命令 复选和单选标记菜单命令 创建弹出式菜单 快捷键,添加新菜单项,应用AppWizard创建的应用程序菜单栏。 在多文档界面下增加了一个“窗口”菜单项。,添加新菜单项,用户往往不满足于AppWizard自动生成的菜单项,比如创建文件翻译系统中的菜单栏时,除以上菜单项外可能还需要对翻译语言提供选择菜单项。这时就需要用户根据自己的实际需要手动为菜单栏添加菜单项。,编辑菜单项的属性,在为菜单项添加名称时,系统已经自动打开一个名为“Menu Item Properti

3、es” 的对话框。输入的菜单项名称将会出现在“标题”文本框处。,编辑菜单项的属性,该对话框中各选项的含义分别是: “ID”文本框:菜单项的唯一标识,可由系统生成,也可由用户自定义。 “标题”文本框:用户可见的菜单项名称。,编辑菜单项的属性,编辑菜单项的属性,“暂停”下拉列表框:选中相应菜单后就退出其所在的菜单。 “提示”文本框:鼠标移动到相应菜单处时,在窗口状态栏会出现提示信息。,例题分析,4.1 菜单,学习目标 1. 响应菜单消息 2. 控制菜单状态 3. 使用快捷键,3.1,返回第4章,程序的实现步骤,1、利用AppWizard生成程序框架(MenuTest) 2、编辑资源 3、加入菜单消

4、息处理函数 4、菜单命令的更新控制,步骤1 生成程序框架(MenuTest),项目名称: MenuTest 选择单文档界面应用程序(Single document),步骤2 编辑资源,1.编辑菜单资源 画图 Pop-up 选中 Caption ID Prompt 矩形(&R)tCtrl+R ID_DRAW_RECT 在视图中画矩形 椭圆(&C)tAlt+C ID_DRAW_CIRCLE 在视图中画椭圆 2.编辑快捷键资源 ID Modifiers Key ID_DRAW_RECT Ctrl R ID_DRAW_CIRCL Alt C,步骤3 加入菜单消息处理函数,Class Name Obje

5、cts IDs Messages CMenuTestView ID_DRAW_RECT COMMAND CMenuTestView ID_DRAW_ CIRCLE COMMAND,void CMenuTestView:OnDrawRect() CClientDC dc(this); dc.Rectangle(50,50,200,150); ,void CMenuTestView:OnDrawCircle() CClientDC dc(this); dc.Ellipse(250,50,400,150); ,步骤4 菜单命令的更新控制,1. 在画图 菜单中再添加两个菜单项 Caption ID P

6、rompt 允许画矩形 ID_DRAW_ENABLE - 禁止画矩形 ID_DRAW_DISABLE - 在视类中添加一个记录当前“矩形”菜单项状态的变量 BOOL m_Enable; 3. 在构造函数中初始化数据成员m_Enable m_ Enable =TRUE;,步骤4 菜单命令的更新控制,4. 添加 菜单响应函数 Class Name Objects IDs Messages CMenuTestView ID_DRAW_ENABLE COMMAND CMenuTestView ID_DRAW_ DISABLE COMMAND CMenuTestView ID_DRAW_RECT UPD

7、ATE_COMMAND_UI CMenuTestView ID_DRAW_ENABLE UPDATE_COMMAND_UI CMenuTestView ID_DRAW_ DISABLE UPDATE_COMMAND_UI,void CMenuTestView:OnUpdateDrawRect(CCmdUI* pCmdUI) pCmdUI-Enable(m_Enable); ,步骤4 菜单命令的更新控制,void CMenuTestView:OnDrawDisable() m_Enable = FALSE; ,void CMenuTestView:OnDrawEnable() m_Enable

8、= TRUE; ,void CMenuTestView:OnUpdateDrawEnable(CCmdUI* pCmdUI) pCmdUI-SetCheck(m_Enable ? 1:0); ,void CMenuTestView:OnUpdateDrawDisable(CCmdUI* pCmdUI) pCmdUI-SetCheck(m_Enable ? 0:1); ,基本知识,1、pCmdUI-Enable(true | false); 说明:使用户界面对象有效或无效 2、pCmdUI-SetCheck( 1| 0); 说明:设置或取消选中用户界面对象 3、使用COMMAND消息响应菜单项的

9、选择事件 4、 UPDATE_COMMAND_UI消息控制菜使用单项状态,4.2 快捷菜单,学习目标 1. 实现快捷菜单,返回第4章,程序的实现步骤,1、编辑快捷菜单资源 2、显示跟踪菜单 3、添加菜单响应函数 4、实现对话框功能,步骤1 编辑快捷菜单资源,添加菜单(IDR_POPUP_MENU ) Popup1 选中Pop-up Caption ID 编辑矩形坐标 ID_EDIT_RECT 编辑椭圆坐标 ID_EDIT_CIRCLE,4.2,步骤2 显示快捷菜单,添加响应函数 Class Name ObjectsIDs Messages CMainFrame CMainFrame WM_CO

10、NTEXTMENU,4.2,void CMainFrame:OnContextMenu(CWnd* pWnd, CPoint point) / TODO: Add your message handler code here CMenu menu; if(menu.LoadMenu(IDR_POPUP_MENU) CMenu *pPopup=menu.GetSubMenu(0); pPopup-TrackPopupMenu (TPM_LEFTALIGN|TPM_RIGHTBUTTON, point.x, point.y,this); ,步骤2 显示快捷菜单,4.2,步骤3 添加菜单消息处理函数

11、,(1) 编辑对话框资源,静态文本框,IDC_STATIC,左上角坐标(X1,Y1) 静态文本框,IDC_STATIC,右下角坐标(X2,Y2) 编辑框,IDC_EDIT_X1 编辑框,IDC_EDIT_Y1 编辑框,IDC_EDIT_X2 编辑框,IDC_EDIT_Y2 按扭控件,IDOK,确定 按扭控件,IDCANCEL,取消,4.2,步骤3 添加菜单消息处理函数,(2)为对话框添加控件关联变量 IDC_EDIT_X1,int,m_nX1 IDC_EDIT_Y1,int,m_nY1 IDC_EDIT_X2,int,m_nX2 IDC_EDIT_Y2,int,m_nY2 (3)在主框架中加入

12、变量并初始化 int m_nRectLeft; int m_nRectTop; int m_nRectRight; int m_nRectBottom; int m_nCircleLeft; int m_nCircleTop; int m_nCircleRight; int m_nCircleBottom;,4.2,CMainFrame:CMainFrame() / TODO: add member initialization code here m_nRectLeft = 50; m_nRectTop = 50; m_nRectRight = 200; m_nRectBottom = 15

13、0; m_nCircleLeft = 50; m_nCircleTop = 50; m_nCircleRight = 200; m_nCircleBottom = 150; ,步骤3 添加菜单消息处理函数,4.2,void CMenuTestView:OnDrawRect() CMainFrame *pMainFrame = (CMainFrame *) AfxGetApp()-GetMainWnd(); CClientDC dc(this); dc.Rectangle(pMainFrame-m_nRectLeft,pMainFrame-m_nRectTop, pMainFrame-m_nRe

14、ctRight,pMainFrame-m_nRectBottom); void CMenuTestView:OnDrawCircle() CMainFrame *pMainFrame = (CMainFrame *) AfxGetApp()-GetMainWnd(); CClientDC dc(this); dc.Ellipse(pMainFrame-m_nCircleLeft,pMainFrame-m_nCircleTop, pMainFrame-m_nCircleRight,pMainFrame-m_nCircleBottom); ,步骤3 添加菜单消息处理函数,(4) 修改画图函数,4.

15、2,步骤3 添加菜单消息处理函数,(5)加入菜单消息处理函数,void CMenuTestView:OnEditRect() CDlgEdit dlg(1); dlg.DoModal(); void CMenuTestView:OnEditCircle() CDlgEdit dlg(2); dlg.DoModal(); ,4.2,步骤4 实现对话框功能,(1)修改构造函数,CDlgEdit:CDlgEdit(int type, CWnd* pParent /*=NULL*/) : CDialog(CDlgEdit:IDD, pParent) /AFX_DATA_INIT(CDlgEdit) m_nX1 = 0; m_nX2 = 0; m_nY1 = 0; m_nY2 = 0; /AFX_DATA_INIT m_nType = type; ,(2)添加确定命令按扭响应函数OnOK(),4.2,步骤4 实现对话框功能,void CDlgEdit:OnOK() UpdateData(TRUE); CMainFrame *pMainFrame = (CMainFrame *) AfxGetApp()-Ge

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号