C++语言程序设计(清华大学郑莉)-(14)复习过程

上传人:go****e 文档编号:137368928 上传时间:2020-07-07 格式:PPT 页数:58 大小:286.50KB
返回 下载 相关 举报
C++语言程序设计(清华大学郑莉)-(14)复习过程_第1页
第1页 / 共58页
C++语言程序设计(清华大学郑莉)-(14)复习过程_第2页
第2页 / 共58页
C++语言程序设计(清华大学郑莉)-(14)复习过程_第3页
第3页 / 共58页
C++语言程序设计(清华大学郑莉)-(14)复习过程_第4页
第4页 / 共58页
C++语言程序设计(清华大学郑莉)-(14)复习过程_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《C++语言程序设计(清华大学郑莉)-(14)复习过程》由会员分享,可在线阅读,更多相关《C++语言程序设计(清华大学郑莉)-(14)复习过程(58页珍藏版)》请在金锄头文库上搜索。

1、第12章 利用MFC开发Windows应用程序,教材:C+程序设计,学习目标,理解Windows编程思想,理解MFC库及其结构 掌握利用MFC Appwizard创建Windows应用程序的步骤和方法,弄清MFC Appwizard所创建的应用程序中所产生的主要类及其功能、组成文件和程序的框架结构 理解消息映射、消息处理函数的概念。掌握利用Class Wizard增加、修改和删除窗口消息处理函数的方法和步骤,并理解程序代码的变化过程和特点 掌握文档/视图结构应用程序的开发过程 掌握菜单、工具栏、控件的使用 掌握对话框应用程序的开发过程以及数据库访问操作,Windows应用程序的特点与消息驱动机

2、制,基于Windows操作系统的应用程序的特点 标准的图形用户界面,比如窗口、菜单、按钮、列表框等。 应用程序与硬件无关的特性,对于同一类硬件,不论哪个厂家或哪个型号,程序都无需进行任何修改就可以运行。 所有的Windows应用程序都是消息驱动机制,也就是说Windows程序是通过操作系统发送的消息来处理用户的输入。 消息驱动是Windows操作系统的一大特色,操作系统将包括用户输入在内的各种事件,以消息的形式发送到目标,目标系统再根据消息的具体内容进行相应的处理。,典型的Windows应用程序结构,控制台应用程序:在本书第1章第7章介绍的所有程序均为控制台应用程序。控制台应用程序结构简单,可

3、以不使用MFC类库。 基于框架窗口的应用程序:某些应用程序仅需要最小的用户界面和简单的窗口结构,这时可以使用基于框架窗口的方案。 基于文档/视图结构的应用程序:文档/视图应用具有较复杂的结构,当然其功能也相应增强。又可分为单文档(SDI)和多文档界面(MDI)两种模式。 基于对话框的应用程序。,学习MFC的方法,不要一开始学习Visual C+就试图了解整个MFC类库。一般的学习方法是,先大体上对MFC有个了解,知道它的概念、组成等之后,从较简单的类入手,由浅入深,循序渐进、日积月累地学习。一开始使用MFC提供的类时,只需要知道它的一些常用的方法、外部接口,不必要去了解它的细节和内部实现。在学

4、到一定程度时,再深入研究,采用继承的方法对原有的类进行修改和扩充,派生出自己所需的类。,利用MFC AppWizard创建Windows应用程序,利用MFC AppWizard创建一个Windows应用程序的步骤,第1步:启动Visual C+ 6.0,选择【File】菜单下的【New】菜单项,选择【Projects】标签,选择MFC AppWizard(exe)项目类型,在Project name中输入项目名MyExp,定位于“C:EXAMPLE”文件夹中,单击【OK】按钮。 第2步:选择【Single document】应用类型,即单文档应用程序,其他使用默认值,单击【Next】按钮。 第

5、3步:让用户选择程序中是否加入数据库支持,在此使用默认值【None】,单击【Next】按钮。 第4步:让用户选择在程序中加入复合文档,自动化支持或ActiveX控件的支持,在此使用默认值,单击【Next】按钮。 第5步:让用户选择应用程序的一些特性,在此使用默认值,单击【Next】按钮。 第6步:让用户选择应用程序主窗口的风格、在源文件中选择是否加入注释和使用怎样的MFC类库,在此使用默认值,单击【Next】按钮。,第7步:用户可以对MFC AppWizard提供的缺省类名、基类名、头文件名、源文件名进行修改,在此使用默认值,单击【Finish】按钮,显示出用户在前面几个步骤中的选择内容,单击

6、【OK】按钮,系统开始创建应用程序,并回到Visual C+ 6.0的主界面。 运行过的应用程序MyExp可以脱离Visual C+ 6.0单独运行,运行该文档可以双击“C:EXAMPLEDebug”下的MyExp.exe文件,运行结果如图12.1所示。可以看到,和所有的Windows应用程序一样,MyExp也包含标题栏、菜单栏、工具栏、状态栏等窗口元素。,MFC应用程序的类和文件,AppWizard在生成应用程序时,共派生了5个类,单击“MyExp classes”左侧的“+”展开所有的类,即可显示出应用程序MyExp的5个类。其中: CAboutDlg:关于About对话框的对话框类。 C

7、MainFrame:主框架窗口类。 CMyExpApp:应用程序类。 CMyExpDoc:文档类。 CMyExpView:视图类。,在工程中,每个类都拥有自己的类定义文件(*.h)和类实现文件(*.cpp)。类定义文件主要保存各种类的定义,类实现文件主要保存各种类的成员函数的实现代码,AppWiZard生成的5个派生类,类定义和类实现文件,文件说明,AppWizard在自动生成工程时,除了生成上面介绍的各个类的头文件和实现文件外,还生成了一些为建立应用程序所需要的其他文件。这些文件可以在应用程序生成时指定的路径(C:EXAMPLEMyExp)中找到 如下图所示,关于这些文件详细说明,详见教材,

8、在窗口的客户区输出文字和图形,SDI中显示字符串 12.2节中的第1步到第7步。 在左边的Workspace下面的ClassView中,点击类CMyExpView左边的+号,双击OnDraw(),如图所示。,在右边OnDraw()中加入以下阴影部分的代码,编译、运行结果如图所示。 void CMyExpView:OnDraw(CDC * pDC) CMyExpDoc * pDoc = GetDocument(); ASSERT_VALID(pDoc); / TODO: add draw code for native data here pDC-Rectangle(10,10,250,60);

9、 /显示一个矩形框 pDC-TextOut(20,20,我的VC+的第一个SDI程序。);/显示文字 ,程序说明,程序对OnDraw()进行了扩展,使用了CDC类的两个成员函数:画矩形的Rectangle()和文字输出TextOut()。 CDC类中封装了大量的绘图和文字输出方法。 文字信息显示 BOOL TextOut(int x,int y,LPCTSTR lpszString); 功能:在指定坐标(x,y)处显示字符串lpszString的内容,显示成功返回非0值,否则返回0。 说明: 坐标原点(0,0)在客户区左上角,Y轴向下。 LPCTSTR为常量字符指针类型,BOOL为逻辑类型,两

10、者都是Windows的数据类型。还有COLORREF、POINT、LPPOINT、LPCRECT等都是Windows API中定义的关键字,通常将它们看作Windows的数据类型。,画点 COLORREF SetPixel(int x,int y, COLORREF color); COLORREF SetPixel(POINT point, COLORREF color); 功能: 在指定坐标(用参数x,y或点point给出)处按给定颜色(color) 画点,返回值为原来此坐标处的颜色。,画线 画线工作需经两步完成: 确定线的起始位置。 CPoint MoveTo(int x,int y);

11、 CPoint MoveTo(POINT point); 功能:将绘图位置移至指定坐标处,返回移动前的绘图位置。 确定了线的起点后,使用成员函数LineTo()画线。 BOOL LintTo(int x,int y);/参数为终点坐标 BOOL LintTo(POINT point); 功能:画线。,绘制矩形 BOOL Rectangle(int x1,int y1,int x2,int y2); BOOL Rectangle(LPCRECT lpRect); 功能:绘制一个左上角坐标为(x1,y1),右下角坐标为(x2,y2)的矩形。 绘制椭圆 BOOL Ellipse(int x1,int

12、 y1,int x2,int y2); BOOL Ellipse (LPCRECT lpRect); 功能:绘制一个左上角坐标为(x1,y1),右下角坐标为(x2, y2)的矩形所围住的椭圆,Windows消息处理,用户输入响应是Windows程序必不可少的功能。例如,当用户在窗口中按下鼠标左键时,Windows系统就会发送WM_LBUTTONDOWN消息给该窗口,如果程序需要对此消息做出反应,必然要调用相应的处理函数,如果没有定义处理函数,则该消息被忽略。编制消息处理函数有时又被称作消息映射或捕获消息。 通过消息映射,消息就和它的处理函数对应起来,消息处理函数指的是与某个消息对应的函数。消息

13、处理函数的执行是由其对应的消息引发的,某个类对象中的消息处理函数是与这个类对象能够得到的一个消息对应的,当这个消息发生时,这个函数就会被执行。 利用ClassWizard可以管理消息处理函数,ClassWizard是一个非常强大有用的工具,可以用ClassWizard来创建新类、定义消息处理函数、覆盖MFC的虚拟函数,从对话框、表单视图或记录视图的控件中获取数据。,可以用三种方法来激活ClassWizard对话框: 选择【View】菜单中的【ClassWizard】菜单项; 直接按下Ctrl+W键; 在代码编辑窗口中单击鼠标右键(此时,代码编辑窗口中必须有打开的文件),在弹出菜单中选择【Cla

14、ssWizard】菜单项。,弹出【MFC ClassWizard】对话框,在【MFC ClassWizard】对话框上面共有五个选项卡,分别说明如下: 【Message Maps】选项卡用于进行消息映射的处理; 【Member Variables】选项卡用于为对话框中的控件所用到的类创建成员变量; 【Automation】选项卡帮助用户管理与OLE自动化相联系的方法和属性; 【ActiveX Events】选项卡帮助用户管理ActiveX类支持的ActiveX事件; 【Class Info】选项卡显示类的一般信息,包括定义它的头文件和源文件、类名以及与之相联系的基类。,Windows消息,消息

15、就是操作系统通知应用程序某件事情已经发生的一种方式。例如,当用户移动或双击鼠标、改变窗口大小等,都将向适当的窗口发送消息,一个窗口可以向另一个窗口发送消息。 Windows系统中的消息主要有三种类型:标准的Windows消息、控件消息和命令消息,标准的Windows消息,所有以WM_为前缀的消息都是标准的Windows消息(WM_COMMAND消息除外),如WM_PAINT、WM_QUIT等,这些消息通常含有用于确定如何对消息进行处理的一些参数。标准的Windows 消息一般由窗口对象和视图对象进行处理,标准的Windows消息可以分为三类,即键盘消息、鼠标消息和窗口消息 鼠标消息 无论何时移

16、动鼠标或操作鼠标按键,Windows便产生一条或多条消息并将其发送给位于鼠标光标下的窗口 键盘消息 键盘消息的响应函数是OnKeyDown(),用于处理WM_KEYDOWN消息(按下键盘上的按键),该函数的原型为: afx_msg OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);,窗口消息 所有窗口的变化,包括窗口内容重绘WM_PAINT,窗口最大化WM_MAXIMIZE,窗口最小化WM_MINIMIZE,窗口重定义大小WM_RESIZE,窗口滚动WM_HSCROLL、WM_VSCROLL,窗口定时WM_TIMER等消息所带参数各不相同,控件消息,控件是一个小的子窗口,属于其他窗口(如对话框等),能够接受操作并象父窗口发送消息。常见的控件有按钮、列表框、编辑框、复合框、滚动条等 发送控件消息的控件在Visual C+中使用唯一ID号来进行标识,使用控件类来操纵 控件消息分为两类: 从控件传给消息,通常这类消息前缀的最后一个字符为N 由系统发送给控件的消息,这类消息前缀的最后一个字符为M,

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

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

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