C--面向对象程序设计第12章-利用MFC开发Windows应用程序课件.ppt
《C--面向对象程序设计第12章-利用MFC开发Windows应用程序课件.ppt》由会员分享,可在线阅读,更多相关《C--面向对象程序设计第12章-利用MFC开发Windows应用程序课件.ppt(56页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C+面向对象程序设计第十二章 利用MFC开发Windows应用程序学习目标(1 1)理解)理解Windows Windows编程思想,理解 编程思想,理解MFC MFC库及其结构 库及其结构(2 2)掌握利用)掌握利用MFC Appwizard MFC Appwizard创建 创建Windows Windows应用程序的步 应用程序的步骤和方法,弄清 骤和方法,弄清MFC Appwizard MFC Appwizard所创建的应用程序中所产 所创建的应用程序中所产生的主要类及其功能、组成文件和程序的框架结构 生的主要类及其功能、组成文件和程序的框架结构(3 3)理解消息映射、消息处理函数的概念
2、。掌握利用)理解消息映射、消息处理函数的概念。掌握利用Class Class Wizard Wizard增加、修改和删除窗口消息处理函数的方法和步骤,增加、修改和删除窗口消息处理函数的方法和步骤,并理解程序代码的变化过程和特点 并理解程序代码的变化过程和特点(4 4)掌握文档)掌握文档/视图结构应用程序的开发过程 视图结构应用程序的开发过程(5 5)掌握菜单、工具栏、控件的使用)掌握菜单、工具栏、控件的使用(6 6)掌握对话框应用程序的开发过程以及数据库访问操作)掌握对话框应用程序的开发过程以及数据库访问操作Windows应用程序的特点与消息驱动机制 n n 基于 基于Windows Wind
3、ows操作系统的应用程序的特点 操作系统的应用程序的特点 n n 标准的图形用户界面,比如窗口、菜单、按钮、列表 标准的图形用户界面,比如窗口、菜单、按钮、列表框等。框等。n n 应用程序与硬件无关的特性,对于同一类硬件,不论 应用程序与硬件无关的特性,对于同一类硬件,不论哪个厂家或哪个型号,程序都无需进行任何修改就可 哪个厂家或哪个型号,程序都无需进行任何修改就可以运行。以运行。n n 所有的 所有的Windows Windows应用程序都是消息驱动机制,也就是说 应用程序都是消息驱动机制,也就是说Windows Windows程序是通过操作系统发送的消息来处理用户的 程序是通过操作系统发送
4、的消息来处理用户的输入。输入。n n 消息驱动 消息驱动是 是Windows Windows操作系统的一大特色,操作系统将包 操作系统的一大特色,操作系统将包括用户输入在内的各种事件,以消息的形式发送到目标,括用户输入在内的各种事件,以消息的形式发送到目标,目标系统再根据消息的具体内容进行相应的处理。目标系统再根据消息的具体内容进行相应的处理。典型的Windows应用程序结构 n n 控制台应用程序 控制台应用程序:在本书第:在本书第1 1章 章 第 第7 7章介绍的所有程序均 章介绍的所有程序均为控制台应用程序。控制台应用程序结构简单,可以不使 为控制台应用程序。控制台应用程序结构简单,可以
5、不使用 用MFC MFC类库。类库。n n 基于框架窗口的应用程序 基于框架窗口的应用程序:某些应用程序仅需要最小的用:某些应用程序仅需要最小的用户界面和简单的窗口结构,这时可以使用基于框架窗口的 户界面和简单的窗口结构,这时可以使用基于框架窗口的方案。方案。n n 基于文档 基于文档/视图结构的应用程序 视图结构的应用程序:文档:文档/视图应用具有较复 视图应用具有较复杂的结构,当然其功能也相应增强。又可分为单文档 杂的结构,当然其功能也相应增强。又可分为单文档(SDI SDI)和多文档界面()和多文档界面(MDI MDI)两种模式。)两种模式。n n 基于对话框的应用程序 基于对话框的应用
6、程序。学习MFC的方法 n n 不要一开始学习 不要一开始学习Visual C+Visual C+就试图了解整个 就试图了解整个MFC MFC类库。一 类库。一般的学习方法是,先大体上对 般的学习方法是,先大体上对MFC MFC有个了解,知道它的概 有个了解,知道它的概念、组成等之后,念、组成等之后,从较简单的类入手,由浅入深,循序渐 从较简单的类入手,由浅入深,循序渐进、日积月累地学习 进、日积月累地学习。一开始使用。一开始使用MFC MFC提供的类时,只需 提供的类时,只需要知道它的一些常用的方法、外部接口,不必要去了解它 要知道它的一些常用的方法、外部接口,不必要去了解它的细节和内部实现
7、。在学到一定程度时,再深入研究,采 的细节和内部实现。在学到一定程度时,再深入研究,采用继承的方法对原有的类进行修改和扩充,派生出自己所 用继承的方法对原有的类进行修改和扩充,派生出自己所需的类。需的类。利用MFC AppWizard创建Windows应用程序 n n 利用MFC AppWizard 创建一个Windows 应用程序的步骤 n n 第 第1 1步:启动 步:启动Visual C+6.0 Visual C+6.0,选择【,选择【File File】菜单下的【】菜单下的【New New】菜单项,选择【】菜单项,选择【Projects Projects】标签,选择】标签,选择MFC
8、MFC AppWizard(exe)AppWizard(exe)项目类型,在 项目类型,在Project name Project name中输入项目名 中输入项目名MyExp MyExp,定位于,定位于“C:EXAMPLE”“C:EXAMPLE”文件夹中,单击【文件夹中,单击【OK OK】按钮。按钮。n n 第 第2 2步:选择【步:选择【Single document Single document】应用类型,即单文档应】应用类型,即单文档应用程序,其他使用默认值,单击【用程序,其他使用默认值,单击【Next Next】按钮。】按钮。n n 第 第3 3步:让用户选择程序中是否加入数据库支
9、持,在此使 步:让用户选择程序中是否加入数据库支持,在此使用默认值【用默认值【None None】,单击【】,单击【Next Next】按钮。】按钮。n n 第 第4 4步:让用户选择在程序中加入复合文档,自动化支持 步:让用户选择在程序中加入复合文档,自动化支持或 或ActiveX ActiveX控件的支持,在此使用默认值,单击【控件的支持,在此使用默认值,单击【Next Next】按钮。按钮。n n 第 第5 5步:让用户选择应用程序的一些特性,在此使用默认 步:让用户选择应用程序的一些特性,在此使用默认值,单击【值,单击【Next Next】按钮。】按钮。n n 第 第6 6步:让用户选
10、择应用程序主窗口的风格、在源文件中 步:让用户选择应用程序主窗口的风格、在源文件中选择是否加入注释和使用怎样的 选择是否加入注释和使用怎样的MFC MFC类库,在此使用默认 类库,在此使用默认值,单击【值,单击【Next Next】按钮。】按钮。n n 第 第7 7步:用户可以对 步:用户可以对MFC AppWizard MFC AppWizard提供的缺省类名、基 提供的缺省类名、基类名、头文件名、源文件名进行修改,在此使用默认值,类名、头文件名、源文件名进行修改,在此使用默认值,单击【单击【Finish Finish】按钮,显示出用户在前面几个步骤中的选】按钮,显示出用户在前面几个步骤中的
11、选择内容,单击【择内容,单击【OK OK】按钮,系统开始创建应用程序,并】按钮,系统开始创建应用程序,并回到 回到Visual C+6.0 Visual C+6.0的主界面。的主界面。运行过的应用程序 运行过的应用程序MyExp MyExp可以脱离 可以脱离Visual C+6.0 Visual C+6.0单 单独运行,运行该文档可以双击 独运行,运行该文档可以双击“C:EXAMPLEDebug”“C:EXAMPLEDebug”下的 下的MyExp.exe MyExp.exe文件,运行结果如图 文件,运行结果如图12.1 12.1所示。可以看到,和 所示。可以看到,和所有的 所有的Window
12、s Windows应用程序一样,应用程序一样,MyExp MyExp也包含标题栏、菜 也包含标题栏、菜单栏、工具栏、状态栏等窗口元素。单栏、工具栏、状态栏等窗口元素。MFC应用程序的类和文件 n n AppWizard AppWizard在生成应用程序时,共派生了 在生成应用程序时,共派生了5 5个类,单击 个类,单击“MyExp classes”“MyExp classes”左侧的 左侧的“+”“+”展开所有的类,即可显示 展开所有的类,即可显示出应用程序 出应用程序MyExp MyExp的 的5 5个类。其中:个类。其中:n n CAboutDlg CAboutDlg:关于:关于About
13、 About对话框的对话框类。对话框的对话框类。n n CMainFrame CMainFrame:主框架窗口类。:主框架窗口类。n n CMyExpApp CMyExpApp:应用程序类。:应用程序类。n n CMyExpDoc CMyExpDoc:文档类。:文档类。n n CMyExpView CMyExpView:视图类。:视图类。n n 在工程中,每个类都拥有自己的类定义文件(在工程中,每个类都拥有自己的类定义文件(*.h*.h)和类)和类实现文件(实现文件(*.cpp*.cpp)。类定义文件主要保存各种类的定义,)。类定义文件主要保存各种类的定义,类实现文件主要保存各种类的成员函数的
14、实现代码 类实现文件主要保存各种类的成员函数的实现代码 AppWiZard 生成的5 个派生类 类定义和类实现文件 文件说明 n n AppWizard AppWizard在自动生成工程时,除了生成上面介绍的各个 在自动生成工程时,除了生成上面介绍的各个类的头文件和实现文件外,还生成了一些为建立应用程序 类的头文件和实现文件外,还生成了一些为建立应用程序所需要的其他文件。这些文件可以在应用程序生成时指定 所需要的其他文件。这些文件可以在应用程序生成时指定的路径(的路径(C:EXAMPLEMyExp C:EXAMPLEMyExp)中找到。)中找到。如下图所示 如下图所示 关于这些文件详细说明 n
15、 n 详见教材在窗口的客户区输出文字和图形 SDI SDI中显示字符串 中显示字符串12.2 12.2节中的第 节中的第1 1步到第 步到第7 7步。步。在左边的 在左边的Workspace Workspace下面的 下面的ClassView ClassView中,点击类 中,点击类CMyExpView CMyExpView左边的 左边的+号,双击 号,双击OnDraw()OnDraw(),如图所示。,如图所示。n n 在右边 在右边OnDraw()OnDraw()中加入以下阴影部分的代码,编译、运 中加入以下阴影部分的代码,编译、运行结果如图所示。行结果如图所示。void CMyExpVie
16、w:OnDraw(CDC*pDC)void CMyExpView:OnDraw(CDC*pDC)CMyExpDoc*pDoc=GetDocument();CMyExpDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);ASSERT_VALID(pDoc);/TODO:add draw code for native data here/TODO:add draw code for native data herepDC-Rectangle(10,10,250,60);pDC-Rectangle(10,10,250,60);/显示一个矩形框 显示一个矩形框pDC-
17、TextOut(20,20,pDC-TextOut(20,20,我的 我的VC+VC+的第一个 的第一个SDI SDI程序。程序。);/);/显示文字 显示文字 程序说明n n 程序对 程序对OnDraw()OnDraw()进行了扩展,使用了 进行了扩展,使用了CDC CDC类的两个成员函 类的两个成员函数:画矩形的 数:画矩形的Rectangle Rectangle()和文字输出()和文字输出TextOut TextOut()。()。n n CDC CDC类中封装了大量的绘图和文字输出方法。类中封装了大量的绘图和文字输出方法。n n 文字信息显示 文字信息显示n n BOOL TextOut
18、(int x,int y,LPCTSTR lpszString);BOOL TextOut(int x,int y,LPCTSTR lpszString);n n 功能:在指定坐标 功能:在指定坐标(x,y)(x,y)处显示字符串 处显示字符串lpszString lpszString的内容,的内容,显示成功返回非 显示成功返回非0 0值,否则返回 值,否则返回0 0。n n 说明:说明:n n 坐标原点 坐标原点(0,0)(0,0)在客户区左上角,在客户区左上角,Y Y轴向下。轴向下。n n LPCTSTR LPCTSTR为常量字符指针类型,为常量字符指针类型,BOOL BOOL为逻辑类型,
19、两 为逻辑类型,两者都是 者都是Windows Windows的数据类型。还有 的数据类型。还有COLORREF COLORREF、POINT POINT、LPPOINT LPPOINT、LPCRECT LPCRECT等都是 等都是Windows API Windows API中 中定义的关键字,通常将它们看作 定义的关键字,通常将它们看作Windows Windows的数据类型。的数据类型。n n 画点 画点n n COLORREF SetPixel(int x,int y,COLORREF color);COLORREF SetPixel(int x,int y,COLORREF colo
20、r);n n COLORREF SetPixel(POINT point,COLORREF COLORREF SetPixel(POINT point,COLORREF color);color);n n 功能:功能:n n 在指定坐标(用参数 在指定坐标(用参数x,y x,y或点 或点point point给出)处按给定颜色 给出)处按给定颜色(color)(color)画点,返回值为原来此坐标处的颜色。画点,返回值为原来此坐标处的颜色。n n 画线 画线n n 画线工作需经两步完成:画线工作需经两步完成:n n 确定线的起始位置。确定线的起始位置。n n CPoint MoveTo(int
21、 x,int y);CPoint MoveTo(int x,int y);n n CPoint MoveTo(POINT point);CPoint MoveTo(POINT point);n n 功能:将绘图位置移至指定坐标处,返回移动前的绘 功能:将绘图位置移至指定坐标处,返回移动前的绘图位置。图位置。n n 确定了线的起点后,使用成员函数 确定了线的起点后,使用成员函数LineTo()LineTo()画线。画线。n n BOOL LintTo(int x,int y);/BOOL LintTo(int x,int y);/参数为终点坐标 参数为终点坐标n n BOOL LintTo(PO
22、INT point);BOOL LintTo(POINT point);n n 功能:画线。功能:画线。n n 绘制矩形 绘制矩形n n BOOL Rectangle(int x1,int y1,int x2,int y2);BOOL Rectangle(int x1,int y1,int x2,int y2);n n BOOL Rectangle(LPCRECT lpRect);BOOL Rectangle(LPCRECT lpRect);n n 功能:绘制一个左上角坐标为(功能:绘制一个左上角坐标为(x1,y1 x1,y1),右下角坐标),右下角坐标为(为(x2,y2)x2,y2)的矩形。
23、的矩形。n n 绘制椭圆 绘制椭圆n n BOOL Ellipse(int x1,int y1,int x2,int y2);BOOL Ellipse(int x1,int y1,int x2,int y2);n n BOOL Ellipse(LPCRECT lpRect);BOOL Ellipse(LPCRECT lpRect);n n 功能:绘制一个左上角坐标为(功能:绘制一个左上角坐标为(x1,y1 x1,y1),右下角坐标),右下角坐标为(为(x2,y2)x2,y2)的矩形所围住的椭圆 的矩形所围住的椭圆 Windows消息处理 n n 用户输入响应是 用户输入响应是Windows W
24、indows程序必不可少的功能。例如,当 程序必不可少的功能。例如,当用户在窗口中按下鼠标左键时,用户在窗口中按下鼠标左键时,Windows Windows系统就会发送 系统就会发送WM_LBUTTONDOWN WM_LBUTTONDOWN消息给该窗口,如果程序需要对此消息做 消息给该窗口,如果程序需要对此消息做出反应,必然要调用相应的处理函数,如果没有定义处理 出反应,必然要调用相应的处理函数,如果没有定义处理函数,则该消息被忽略。函数,则该消息被忽略。编制消息处理函数有时又被称作 编制消息处理函数有时又被称作消息映射或捕获消息。消息映射或捕获消息。n n 通过消息映射,消息就和它的处理函数
25、对应起来 通过消息映射,消息就和它的处理函数对应起来 n n 消息处理函数 消息处理函数指的是与某个消息对应的函数。消息处理函 指的是与某个消息对应的函数。消息处理函数的执行是由其对应的消息引发的,某个类对象中的消息 数的执行是由其对应的消息引发的,某个类对象中的消息处理函数是与这个类对象能够得到的一个消息对应的,当 处理函数是与这个类对象能够得到的一个消息对应的,当这个消息发生时,这个函数就会被执行。这个消息发生时,这个函数就会被执行。n n 利用 利用ClassWizard ClassWizard可以管理消息处理函数,可以管理消息处理函数,ClassWizard ClassWizard是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 程序设计 12 利用 MFC 开发 Windows 应用程序 课件
限制150内