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

上传人:工**** 文档编号:575327415 上传时间:2024-08-18 格式:PPT 页数:46 大小:325KB
返回 下载 相关 举报
浙江工业大学卢谨老师的VC复习new.ppt_第1页
第1页 / 共46页
浙江工业大学卢谨老师的VC复习new.ppt_第2页
第2页 / 共46页
浙江工业大学卢谨老师的VC复习new.ppt_第3页
第3页 / 共46页
浙江工业大学卢谨老师的VC复习new.ppt_第4页
第4页 / 共46页
浙江工业大学卢谨老师的VC复习new.ppt_第5页
第5页 / 共46页
点击查看更多>>
资源描述

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

1、 VC+应用编程复 习 VC+应用编程主要内容WindowsWindows应用程序概述应用程序概述MFCMFC应用程序概述应用程序概述图形与文本图形与文本对话框对话框菜单、工具栏和状态栏菜单、工具栏和状态栏WindowsWindows控件控件文档与视图文档与视图动态链接库动态链接库 VC+应用编程WindowsWindows应用程序概述应用程序概述 VC+应用编程 利用利用Windows APIWindows API函数和函数和MFCMFC类库编写类库编写WindowsWindows应应用程序用程序必须首先了解以下内容:必须首先了解以下内容:(1)(1)窗口的概念窗口的概念(2)(2)事件驱动

2、的概念事件驱动的概念(3)(3)句柄句柄(4)(4)消息消息 VC+应用编程2.2Windows应用程序组成及编程步骤应用程序组成及编程步骤 一个完整的一个完整的Windows应应用程序通常用程序通常由由五种类型五种类型的文件组成。的文件组成。2.2.1 应用程序的组成应用程序的组成1.C语言源程序文件语言源程序文件(.cpp)2.头文件头文件(.h)3.模块定义文件模块定义文件(.def)4.资源描述文件资源描述文件(.rc)5.项目文件项目文件(.mark) VC+应用编程入口函数入口函数WinMain窗口函数窗口函数WndProcWndProcWindows应用程序应用程序构成基构成基本

3、框架本框架包含各种包含各种数据类型、数据类型、数据结构数据结构与函数等与函数等WinMain和和WinProc是是Windows应用程序的主体应用程序的主体2.2.2 源程序的组成结构源程序的组成结构1. 所有应用程序的入口,类似所有应用程序的入口,类似Main函数,函数,2. 完成一系列的定义和初始化,并产生消息循环完成一系列的定义和初始化,并产生消息循环 VC+应用编程MFCMFC应用程序概述应用程序概述 VC+应用编程MFCMFC应用程序框架结构类的继承关系:应用程序框架结构类的继承关系: 2.2.2 MFC应用程序框架结构类应用程序框架结构类 VC+应用编程 一一个个MFCMFC应应用

4、用程程序序并并不不直直接接操操作作上上述述类类,而而是是以以上上述述类类为为基类派生新的类基类派生新的类,从而构建,从而构建WindowsWindows应用程序的基本框架。应用程序的基本框架。 例如,应用程序例如,应用程序Li2_1Li2_1中的类与这些基类的派生关系中的类与这些基类的派生关系: : VC+应用编程2.3 消息映射与消息处理消息映射与消息处理 WindowsWindows消消息息主主要要有有3 3种种类类型型: :标标准准WindowsWindows消消息息、控件消息控件消息和和命令消息命令消息。2.3.1 消息的类别及其描述消息的类别及其描述 VC+应用编程2.3.2 MFC

5、消息映射机制消息映射机制 MFCMFC采用采用消息映射消息映射来处理消息;来处理消息; 消消息息映映射射机机制制包包括括一一组组消消息息映映射射宏宏,用用于于把把一一个个WindowsWindows消息和其消息处理函数联系起来。消息和其消息处理函数联系起来。 所所有有从从CCmdTargetCCmdTarget类类派派生生出出来来的的类类都都能能够够拥拥有有自自己己的消息映射。的消息映射。 VC+应用编程图形与文本 VC+应用编程Windows图形设备接口图形设备接口(GDI)是为与是为与设备无关设备无关的的图形设计的。所谓图形设计的。所谓设备的无关性设备的无关性,就是操作系统屏蔽,就是操作系

6、统屏蔽了硬件设备的差异,因而设备无关性能使用户编程时了硬件设备的差异,因而设备无关性能使用户编程时无需考虑特殊的硬件设置无需考虑特殊的硬件设置一、图形设备接口一、图形设备接口(GDI)(GDI)GDI负责系统与用户或绘图程序之间的信息交换,并控制在输负责系统与用户或绘图程序之间的信息交换,并控制在输出设备上出设备上显示图形显示图形或或文字文字,是是Windows系统的重要组成部分系统的重要组成部分Windows支持与设备无关的图形支持与设备无关的图形利用利用GDI和和Windows设设备驱动程序备驱动程序开发人员只要建开发人员只要建立与输出设备的立与输出设备的关联,让系统加关联,让系统加载相应

7、的设备驱载相应的设备驱动程序即可动程序即可 VC+应用编程1. 1. GDI的一些基本概念的一些基本概念 设备描述表设备描述表即为即为设备环境设备环境的属性的集合的属性的集合应用程序应用程序与与输出设备输出设备之之间的桥梁间的桥梁Win系统系统外设外设直接访问直接访问不允许不允许统一的设备环境统一的设备环境(DC)提供提供使应用程序与设备相连使应用程序与设备相连用用户户为确保图形输出为确保图形输出的的设备无关性设备无关性 VC+应用编程3.1.3 设备环境类设备环境类 1.1.设备环境类设备环境类CDC(ClassCDC(Class of Device Context) of Device C

8、ontext)及其功能及其功能 所有设备环境类的基类,对所有设备环境类的基类,对GDI的所有绘图函数进行了封装的所有绘图函数进行了封装用于响应窗口重绘消息的绘图输用于响应窗口重绘消息的绘图输出,不仅可对客户区进行操作,出,不仅可对客户区进行操作,还可以对非客户区进行操作还可以对非客户区进行操作代表窗口客户区的设备环境代表窗口客户区的设备环境代表整个窗口的设备环境,包括代表整个窗口的设备环境,包括客户区和非客户区客户区和非客户区代表代表Windows图元文件设备环境图元文件设备环境 VC+应用编程MFC程序绘图的方法在在MFCMFC应用程序中,一般情况下,很多绘图操作都是在视类的应用程序中,一般

9、情况下,很多绘图操作都是在视类的OnDrawOnDraw()()成员函数中进行的成员函数中进行的. .OnDrawOnDraw()()函数参数中自动有一个函数参数中自动有一个CDCCDC的指针的指针pDCpDC,利用,利用pDCpDC调用调用CDCCDC类的成员函数完成绘图操作。类的成员函数完成绘图操作。另外,当用户需要立即绘制图像时,可以通过调用更新窗口另外,当用户需要立即绘制图像时,可以通过调用更新窗口函数函数Invalidate()Invalidate()使使WindowsWindows送出送出WM_PAINTWM_PAINT消息自动调用消息自动调用OnDrawOnDraw()()函数来

10、重绘图形函数来重绘图形 VC+应用编程3.2 3.2 GDIGDI对象类对象类CGdiObjectCGdiObject GDIGDI对象是对象是WindowsWindows图形设备接口的抽象绘图工图形设备接口的抽象绘图工具具。除了画笔和画刷,其他。除了画笔和画刷,其他GDIGDI对象还包括字体、对象还包括字体、位图和调色板。位图和调色板。 MFCMFC对对GDIGDI对象进行了很好的封装,提供了封装对象进行了很好的封装,提供了封装GDIGDI对象的类,如对象的类,如CPenCPen、CBrushCBrush、CFontCFont、CBitmapCBitmap和和CPaletteCPalette

11、等,这些类都是等,这些类都是GDIGDI对象类对象类CGdiObjectCGdiObject的派生类,它们的继承关系如图所示。的派生类,它们的继承关系如图所示。 VC+应用编程画笔。绘制对象的边框以及直线和曲线。画笔。绘制对象的边框以及直线和曲线。画刷。填充一个封闭图形对象内部区域画刷。填充一个封闭图形对象内部区域字体对象。用来绘制文本字体对象。用来绘制文本位图。装载和操作位图位图。装载和操作位图调色板。包含系统可用的色彩信息,是应调色板。包含系统可用的色彩信息,是应用程序和彩色输出设备环境的接口用程序和彩色输出设备环境的接口区域。用于设备环境区域。用于设备环境(通常是窗口通常是窗口)内的区内

12、的区域操作域操作 VC+应用编程 GDI类图形对象类功能描述CPen用于绘制对象的边线CBrush用于填充绘制对象的内部CFont用于绘制文本 VC+应用编程3.3.3 创建和使用自定义画刷创建和使用自定义画刷(画笔、字体画笔、字体)包括三个步骤包括三个步骤:创创建建画画刷刷:先先构构造造一一个个没没有有初初始始化化的的CBrushCBrush画画刷刷对对象象,再再调调用用CBrushCBrush类类的的初初始始化化成成员员函函数数创创建建定定制制的的画画刷刷工工具具。类型不同的画刷使用不同的函数实现类型不同的画刷使用不同的函数实现。选择创建的画刷选择创建的画刷还原画刷还原画刷CBrushCB

13、rush类提供的创建函数中常用的有以下几个:类提供的创建函数中常用的有以下几个: VC+应用编程菜单、工具栏、状态栏4.1菜单菜单4.2工具栏工具栏4.3状态栏状态栏 VC+应用编程菜单设计一般需要经过菜单设计一般需要经过下面三步下面三步:(1)(1) 使用菜单编辑器编辑使用菜单编辑器编辑菜单资源菜单资源, ,设置菜单属性设置菜单属性(包括菜单名和(包括菜单名和ID););(2)(2) 使用使用ClassWizardClassWizard进行进行消息映射消息映射(3)(3) 编辑编辑成员函数,完成菜单所要实现的功能成员函数,完成菜单所要实现的功能。 VC+应用编程在在类类向向导导ClassWi

14、zardClassWizard的的Message Message MapMap标标签签中中,如如果果选选择择一一个个菜菜单单IDID,在在MessagesMessages列列表表框框中中就就会会出现以下两项:出现以下两项:COMMANDUPDATE_COMMAND_UI 其中其中UPDATE_COMMAND_UI是更新命令用是更新命令用户接口消息,专门用于处理菜单项和工具条按钮户接口消息,专门用于处理菜单项和工具条按钮的更新。的更新。 VC+应用编程框架向处理函数发送更新命令时,传递给处理函数一个框架向处理函数发送更新命令时,传递给处理函数一个指向指向CCmdUICCmdUI对象的指针对象的指

15、针。利用指向利用指向CCmdUICCmdUI对象对象的指针调用菜单或工具栏的命令接的指针调用菜单或工具栏的命令接口函数来更新用户接口对象。口函数来更新用户接口对象。CCmdUI对象对象菜单项菜单项工具按钮工具按钮成员函数功能Enable()设置菜单项是否有效SetCheck()增加或清除“”标记SetRadio()增加或清除原点标记SetText()改变菜单显示文本 VC+应用编程工具栏工具栏工具栏:常用的菜单命令以按钮的形式,提供给用户使用。工具栏可以方便用户操作工具栏可以方便用户操作。 VC+应用编程4.2 4.2 工具栏工具栏 在在MFCMFC中中,工工具具栏栏的的功功能能由由类类CTo

16、olBarCToolBar实实现现。工工具具栏栏资资源源和和工工具具栏栏类类CToolBarCToolBar是是工工具具栏栏的的两两个个要要素素。创创建建工具栏的基本步骤是:工具栏的基本步骤是:l创建工具栏资源;创建工具栏资源;l构建一个构建一个CToolBarCToolBar对象;对象;l调调用用CToolBar:CreateCToolBar:Create( ( ) )或或CreateExCreateEx( ( ) )函函数数创创建建工具栏窗口;工具栏窗口;l调用调用CToolBar:LoadToolBarCToolBar:LoadToolBar载入工具栏资源。载入工具栏资源。 VC+应用编

17、程4.2.3 自定义工具栏的操作自定义工具栏的操作 向向导导生生成成的的标标准准工工具具栏栏的的IDID值值为为IDR_MAINFRAMEIDR_MAINFRAME。 对对一一些些功功能能复复杂杂的的应应用用程程序序,需需要要创创建建多多个个不不同同的的工工具具栏栏。生成工具栏的基本步骤:生成工具栏的基本步骤:(1)添加工具栏资源添加工具栏资源;(2)参参照照MFCMFC应应用用程程序序框框架架添添加加工工具具栏栏的的方方法法,构构造造一一个个CToolBarCToolBar类类的的对对象象,调调用用CToolBar:CreateCToolBar:Create( ( ) )或或CreateEx

18、CreateEx( )( )函数创建工具栏窗口函数创建工具栏窗口;(3)调调用用CToolBar:LoadToolBarCToolBar:LoadToolBar( ( ) )函函数数载载入入工工具具栏栏资源。资源。 除除这这些些基基本本步步骤骤之之外外,还还可可以以调调用用其其他他相相关关函函数数从从而而进进一一步步改改善善工具栏。工具栏。 VC+应用编程 4.3.3 状态栏操作状态栏操作 利利用用MFC MFC AppWizardAppWizard向向导导创创建建应应用用程程序序时时,首首先先在在CMainFrameCMainFrame类类中中定定义义一一个个成成员员变变量量m_wndSta

19、tusBarm_wndStatusBar,它它是是状状态态栏栏类类CStatusBarCStatusBar的的对对象象。其其次次在在MFCMFC应应用用程程序序框框架架的的实实现现文文件件MainFrm.cppMainFrm.cpp中中,为为状状态态栏栏定定义义一一个个静静态态数数组组indicatorsindicators,如下所示:如下所示:static UINT indicators = ID_SEPARATOR, /显示命令功能提示显示命令功能提示 ID_INDICATOR_CAPS, /显示大写锁定键状态显示大写锁定键状态 ID_INDICATOR_NUM, /显示数字锁定键状态显示

20、数字锁定键状态 ID_INDICATOR_SCRL, /显示滚动锁定键状态显示滚动锁定键状态;String table中说明 VC+应用编程对话框 VC+应用编程5.1 5.1 对话框概述对话框概述5.1.1 对话框的类型对话框的类型主要有以下两种:主要有以下两种:模态模态(Model)对话框对话框非模态非模态(Modeless)对话框对话框 VC+应用编程5.1.2 对话框的对话框的CDialog类类 CDialog类从类从CWnd类派生而来,所类派生而来,所以它继承了以它继承了CWnd类的类的成员函数,具有成员函数,具有CWnd类的基本功能,可以编类的基本功能,可以编写代码移动、显示或隐写

21、代码移动、显示或隐藏对话框,并能根据对藏对话框,并能根据对话框的特点增加新的成话框的特点增加新的成员函数,扩展它的功能。员函数,扩展它的功能。 VC+应用编程对话框主要由以下两部分组成:对话框主要由以下两部分组成:(1)(1) 对对话话框框模模板板:对对话话框框模模板板定定义义了了对对话话框框的的特特性性( (比比如如大大小小、位位置置和和风风格格) )以以及及对对话话框框中中每每个个控控件件的的类型和位置。类型和位置。(2)(2) 对对话话框框类类:从从CDialogCDialog类类派派生生的的对对话话框框类类提提供供编编程接口来管理对话框。程接口来管理对话框。5.1.3 对话框的组成对话

22、框的组成 VC+应用编程5.2.4 对话框数据交换和校验机制对话框数据交换和校验机制 CDialog类类通通过过调调用用其其成成员员函函数数DoDataExchange()实现对话框数据交换和验证。实现对话框数据交换和验证。 DDX(Dialog Data eXchange):将将成成员员变变量量与与对对话话框框控控件件相相连连接接,完完成成数数据据在在成成员员变变量量和和控控件件之之间间的交换。的交换。 DDV(Dialog Data Validation):用用于于数数据据的的校校验验,它它能能自自动动校校验验输输入入的的数数据据(如如字字符符串串的的长长度度或或数数值值的的范围范围)是否

23、符合设计要求。是否符合设计要求。 VC+应用编程 控控 件件 与与 成成 员员 变变 量量 之之 间间 的的 数数 据据 交交 换换 通通 过过 调调 用用 CWndCWnd类类 的的 UpdateDataUpdateData()()函数进行。函数进行。lUpdateDataUpdateData()()函数只有一个函数只有一个BOOLBOOL类型的参数类型的参数当当参参数数为为TRUETRUE时时,MFCMFC通通过过调调用用DoDataExchangeDoDataExchange()()函数将数据函数将数据从控件传递到关联的成员变量从控件传递到关联的成员变量当当参参数数为为FALSEFALS

24、E时时,数数据据从从成成员员变变量量传传递递到到关关联联的控件。的控件。 VC+应用编程 VC+应用编程Windows控件 VC+应用编程6.1.4 控件的访问控件的访问访问控件一般有访问控件一般有3 3种方法种方法 : : 利用对话框的数据交换功能访问控件利用对话框的数据交换功能访问控件 适适用用于于静静态态创创建建的的控控件件,通通过过调调用用UpdateData()函数,实现对话框和控件的数据交换。函数,实现对话框和控件的数据交换。 通过控件对象来访问控件通过控件对象来访问控件利用利用CWnd类的成员函数来访问控件类的成员函数来访问控件 VC+应用编程文档与视图 7.1 文档/视图结构

25、7.2 简单的文档/视图结构应用程序 7.3 文档的读写 7.4 分割视图窗口 7.5 多文档的应用程序 VC+应用编程7.1.1 7.1.1 概述概述文档文档/ /视图结构的基本概念及创建过程。视图结构的基本概念及创建过程。1.1.文档文档( (DocumentDocument) ) 在在文文档档/ /视视图图结结构构中中,文文档档是是用用来来管管理理和和组组织织数数据据的的。CDocumentCDocument类类支支持持文文档档的的标标准准操操作作,为为了了在在应应用程序中处理文档,用程序中处理文档,2视图视图 (View) 在在文文档档/视视图图结结构构中中,视视图图的的作作用用是是显

26、显示示和和编编辑辑文文档档数数据据,提提供供用用户户与与文文档档数数据据的的交交互互接接口口。视视图在图在MFC的的CView类里类里被被实例化。实例化。: VC+应用编程文档中类之间的关系文档管理器文档管理器文档模板文档模板文档文档框架框架视图视图管理管理管理管理 VC+应用编程文档和视图的关系文档和视图的关系数据操作和数据表示的分离 VC+应用编程文档和视图的相互访问文档和视图的相互访问 VC+应用编程字符输入创建插入符字符输入根据鼠标单击设置插入符根据鼠标单击设置插入符处理回车键处理回车键处理退格键处理退格键移动插入符移动插入符 VC+应用编程创建插入符int CInputView:On

27、Create(LPCREATESTRUCT lpCreateStruct) if(CView:OnCreate(lpCreateStruct) = -1)return-1;/TODO:Addyourspecializedcreationcodehere/创建插入符创建插入符CClientDCdc(this);TEXTMETRICtm;dc.GetTextMetrics(&tm);CreateSolidCaret(tm.tmAveCharWidth/8,tm.tmHeight);/显示插入符显示插入符ShowCaret();return0; VC+应用编程字符输入CInputView:CInpu

28、tView()/TODO:addconstructioncodeherem_strLine=;void CInputView:OnLButtonDown(UINT nFlags, CPoint point) /TODO:AddyourmessagehandlercodehereSetCaretPos(point);m_strLine.Empty();m_ptOrigin=point;CView:OnLButtonDown(nFlags, point); VC+应用编程void CInputView:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) /T

29、ODO:Addyourmessagehandlercodehereand/orcalldefaultCClientDC dc(this);TEXTMETRIC tm;dc.GetTextMetrics(&tm);if(0x0d=nChar) /回车处理回车处理 m_strLine.Empty();m_ptOrigin.y+=tm.tmHeight;else if(0x08=nChar) /退格处理退格处理 COLORREF clr=dc.SetTextColor(dc.GetBkColor();dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine); m_strLine=m_strLine.Left(m_strLine.GetLength()-1);dc.SetTextColor(clr);else m_strLine+=nChar;/改变插入符位置改变插入符位置CSize sz=dc.GetTextExtent(m_strLine);CPoint pt;pt.x=m_ptOrigin.x+sz.cx;pt.y=m_ptOrigin.y;SetCaretPos(pt);dc.TextOut(m_ptOrigin.x,m_ptOrigin.y,m_strLine);CView:OnChar(nChar, nRepCnt, nFlags);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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