浙江工业大学卢谨老师的VC复习.ppt

上传人:za****8 文档编号:14447643 上传时间:2020-07-21 格式:PPT 页数:46 大小:325.06KB
收藏 版权申诉 举报 下载
浙江工业大学卢谨老师的VC复习.ppt_第1页
第1页 / 共46页
浙江工业大学卢谨老师的VC复习.ppt_第2页
第2页 / 共46页
浙江工业大学卢谨老师的VC复习.ppt_第3页
第3页 / 共46页
资源描述:

《浙江工业大学卢谨老师的VC复习.ppt》由会员分享,可在线阅读,更多相关《浙江工业大学卢谨老师的VC复习.ppt(46页珍藏版)》请在装配图网上搜索。

1、复 习,主要内容,Windows应用程序概述 MFC应用程序概述 图形与文本 对话框 菜单、工具栏和状态栏 Windows控件 文档与视图 动态链接库,Windows应用程序概述,利用Windows API函数和MFC类库编写Windows应用程序必须首先了解以下内容: (1)窗口的概念 (2)事件驱动的概念 (3)句柄 (4)消息,2.2 Windows应用程序组成及编程步骤,一个完整的Windows应用程序通常由五种类型的文件组成。,2.2.1 应用程序的组成,WinMain和WinProc是 Windows应用程序的主体,2.2.2 源程序的组成结构,1. 所有应用程序的入口,类似Mai

2、n函数, 2. 完成一系列的定义和初始化,并产生消息循环,MFC应用程序概述,MFC应用程序框架结构类的继承关系:,2.2.2 MFC应用程序框架结构类,一个MFC应用程序并不直接操作上述类,而是以上述类为基类派生新的类,从而构建Windows应用程序的基本框架。 例如,应用程序Li2_1中的类与这些基类的派生关系:,2.3 消息映射与消息处理,Windows消息主要有3种类型:标准Windows消息、控件消息和命令消息。,2.3.1 消息的类别及其描述,2.3.2 MFC消息映射机制,MFC采用消息映射来处理消息; 消息映射机制包括一组消息映射宏,用于把一个Windows消息和其消息处理函数

3、联系起来。 所有从CCmdTarget类派生出来的类都能够拥有自己的消息映射。,图形与文本,Windows图形设备接口(GDI)是为与设备无关的图形设计的。所谓设备的无关性,就是操作系统屏蔽了硬件设备的差异,因而设备无关性能使用户编程时无需考虑特殊的硬件设置,1. GDI的一些基本概念 设备描述表即为设备环境的属性的集合,应用程序与输出设备之间的桥梁,Win系统,外设,直接访问,统一的设备环境(DC),使应用程序与设备相连,3.1.3 设备环境类 1.设备环境类CDC(Class of Device Context)及其功能,所有设备环境类的基类,对GDI的所有绘图函数进行了封装,用于响应窗口

4、重绘消息的绘图输出,不仅可对客户区进行操作,还可以对非客户区进行操作,代表窗口客户区的设备环境,代表整个窗口的设备环境,包括客户区和非客户区,代表Windows图元文件设备环境,MFC程序绘图的方法,在MFC应用程序中,一般情况下,很多绘图操作都是在视类的OnDraw()成员函数中进行的. OnDraw()函数参数中自动有一个CDC的指针pDC,利用pDC调用CDC类的成员函数完成绘图操作。 另外,当用户需要立即绘制图像时,可以通过调用更新窗口函数Invalidate()使Windows送出WM_PAINT消息自动调用OnDraw()函数来重绘图形,3.2 GDI对象类CGdiObject,G

5、DI对象是Windows图形设备接口的抽象绘图工具。除了画笔和画刷,其他GDI对象还包括字体、位图和调色板。 MFC对GDI对象进行了很好的封装,提供了封装GDI对象的类,如CPen、CBrush、CFont、CBitmap和CPalette等,这些类都是GDI对象类CGdiObject的派生类,它们的继承关系如图所示。,画笔。绘制对象的边框以及直线和曲线。,画刷。填充一个封闭图形对象内部区域,字体对象。用来绘制文本,位图。装载和操作位图,调色板。包含系统可用的色彩信息,是应用程序和彩色输出设备环境的接口,区域。用于设备环境(通常是窗口)内的区域操作,GDI类,3.3.3 创建和使用自定义画刷

6、(画笔、字体) 包括三个步骤: 创建画刷:先构造一个没有初始化的CBrush画刷对象,再调用CBrush类的初始化成员函数创建定制的画刷工具。类型不同的画刷使用不同的函数实现。 选择创建的画刷 还原画刷 CBrush类提供的创建函数中常用的有以下几个:,菜单、工具栏、状态栏,4.1 菜单 4.2 工具栏 4.3 状态栏,菜单设计一般需要经过下面三步: (1) 使用菜单编辑器编辑菜单资源,设置菜单属性(包括菜单名和ID); (2) 使用ClassWizard进行消息映射 (3) 编辑成员函数,完成菜单所要实现的功能。,在类向导ClassWizard的Message Map标签中,如果选择一个菜单

7、ID,在Messages列表框中就会出现以下两项: COMMAND UPDATE_COMMAND_UI 其中UPDATE_COMMAND_UI是更新命令用户接口消息,专门用于处理菜单项和工具条按钮的更新。,框架向处理函数发送更新命令时,传递给处理函数一个指向CCmdUI对象的指针。 利用指向CCmdUI对象的指针调用菜单或工具栏的命令接口函数来更新用户接口对象。,工具栏,工具栏:常用的菜单命令以按钮的形式,提供给用户使用。 工具栏可以方便用户操作。,4.2 工具栏,在MFC中,工具栏的功能由类CToolBar实现。工具栏资源和工具栏类CToolBar是工具栏的两个要素。创建工具栏的基本步骤是:

8、 创建工具栏资源; 构建一个CToolBar对象; 调用CToolBar:Create( )或CreateEx( )函数创建工具栏窗口; 调用CToolBar:LoadToolBar载入工具栏资源。,4.2.3 自定义工具栏的操作 向导生成的标准工具栏的ID值为IDR_MAINFRAME。 对一些功能复杂的应用程序,需要创建多个不同的工具栏。生成工具栏的基本步骤: (1)添加工具栏资源; (2)参照MFC应用程序框架添加工具栏的方法,构造一个CToolBar类的对象,调用CToolBar:Create( )或CreateEx( )函数创建工具栏窗口; (3)调用CToolBar:LoadToo

9、lBar( )函数载入工具栏资源。,除这些基本步骤之外,还可以调用其他相关函数从而进一步改善工具栏。,4.3.3 状态栏操作,利用MFC AppWizard向导创建应用程序时,首先在CMainFrame类中定义一个成员变量m_wndStatusBar,它是状态栏类CStatusBar的对象。其次在MFC应用程序框架的实现文件MainFrm.cpp中,为状态栏定义一个静态数组indicators,如下所示: static UINT indicators = ID_SEPARATOR, /显示命令功能提示 ID_INDICATOR_CAPS, /显示大写锁定键状态 ID_INDICATOR_NUM

10、, /显示数字锁定键状态 ID_INDICATOR_SCRL, /显示滚动锁定键状态 ;,String table中说明,对话框,5.1 对话框概述,5.1.1 对话框的类型,主要有以下两种: 模态(Model)对话框 非模态(Modeless)对话框,5.1.2 对话框的CDialog类,CDialog类从CWnd类派生而来,所以它继承了CWnd类的成员函数,具有CWnd类的基本功能,可以编写代码移动、显示或隐藏对话框,并能根据对话框的特点增加新的成员函数,扩展它的功能。,对话框主要由以下两部分组成: (1) 对话框模板:对话框模板定义了对话框的特性(比如大小、位置和风格)以及对话框中每个控

11、件的类型和位置。 (2) 对话框类:从CDialog类派生的对话框类提供编程接口来管理对话框。,5.1.3 对话框的组成,5.2.4 对话框数据交换和校验机制,CDialog类通过调用其成员函数DoDataExchange()实现对话框数据交换和验证。 DDX(Dialog Data eXchange):将成员变量与对话框控件相连接,完成数据在成员变量和控件之间的交换。 DDV(Dialog Data Validation):用于数据的校验,它能自动校验输入的数据(如字符串的长度或数值的范围)是否符合设计要求。,控件与成员变量之间的数据交换通过调用CWnd类的UpdateData()函数进行。

12、 UpdateData()函数只有一个BOOL类型的参数 当参数为TRUE时,MFC通过调用DoDataExchange()函数将数据从控件传递到关联的成员变量 当参数为FALSE时,数据从成员变量传递到关联的控件。,Windows控件,6.1.4 控件的访问 访问控件一般有3种方法 : 利用对话框的数据交换功能访问控件 适用于静态创建的控件,通过调用UpdateData()函数,实现对话框和控件的数据交换。 通过控件对象来访问控件 利用CWnd类的成员函数来访问控件,文档与视图,7.1 文档/视图结构 7.2 简单的文档/视图结构应用程序 7.3 文档的读写 7.4 分割视图窗口 7.5 多

13、文档的应用程序,7.1.1 概述,文档/视图结构的基本概念及创建过程。 1.文档(Document) 在文档/视图结构中,文档是用来管理和组织数据的。CDocument类支持文档的标准操作,为了在应用程序中处理文档,,2视图 (View),在文档/视图结构中,视图的作用是显示和编辑文档数据,提供用户与文档数据的交互接口。视图在MFC的CView类里被实例化。,:,文档中类之间的关系,文档管理器,文档模板,文档 框架 视图,管理,管理,文档和视图的关系,数据操作和数据表示的分离,文档和视图的相互访问,字符输入,创建插入符 字符输入 根据鼠标单击设置插入符 处理回车键 处理退格键 移动插入符,创建

14、插入符,int CInputView:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CView:OnCreate(lpCreateStruct) = -1) return -1; / TODO: Add your specialized creation code here /创建插入符 CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics( ,字符输入,CInputView:CInputView() / TODO: add construction code here m_strLine=; voi

15、d CInputView:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here SetCaretPos(point); m_strLine.Empty(); m_ptOrigin=point; CView:OnLButtonDown(nFlags, point); ,void CInputView:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) / TODO: Add your message handler code here and/or call default CClientDC dc(this); TEXTMETRIC tm; dc.GetTextMetrics( ,

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!