《第七章 Visual C++编程基础.ppt》由会员分享,可在线阅读,更多相关《第七章 Visual C++编程基础.ppt(97页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社主讲教师:*个人主页:*2023/4/81主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社教材:教材:C+面向对象程序设计面向对象程序设计李涛李涛 主编主编游洪跃游洪跃 陈良银陈良银 李琳等编李琳等编高等教育出版社高等教育出版社20062006年年2 2月出版月出版2023/4/82主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:
2、李涛 高教出版社本书本书内容内容 2023/4/83主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社提纲MFC 编程编程第七章第七章 Visual C+Visual C+编程基础编程基础ARM Vector TableFIQIRQ(Reserved)Data AbortPrefetch AbortSoftware InterruptUndefined InstructionReset0 x1C0 x180 x140 x100 x0C0 x080 x040 x001 13 32 2Windows A
3、PI 编程编程Windows 程序运行机制程序运行机制 2023/4/84主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.1 Windows程序运行机制程序运行机制WindowsWindows中的事件驱动与消息循中的事件驱动与消息循环环q WindowsWindows是一种是一种典型的事件驱典型的事件驱动运行机制动运行机制;q DOS DOS 应用程序显式地运用一个应用程序显式地运用一个函数函数(比如比如gets)gets)来取得输入来取得输入;2023/4/85主讲教师:四川大学计算机学院主
4、讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社qWindowsWindows应用程序应用程序是等待是等待WindowsWindows系统将输入传递给系统将输入传递给WindowsWindows应用程序的窗口应用程序的窗口,当窗当窗口有输入时,口有输入时,窗口过程函数窗口过程函数处处理输入后将控制返回给理输入后将控制返回给W Windowsindows系统;系统;q WindowsWindows系统系统以消息的形式以消息的形式将将输入传给窗口过程;输入传给窗口过程;2023/4/86主讲教师:四川大学计算机学院主讲教师:四川大
5、学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.1 Windows程序运行机制程序运行机制q 例例7.17.1分析通过鼠标在分析通过鼠标在Windows Windows 的画图程序窗口中画一个矩形的画图程序窗口中画一个矩形的消息传递和消息处理过程;的消息传递和消息处理过程;q WindowsWindows应用程序在运行时就应用程序在运行时就是不断地是不断地等待消息,处理消息,等待消息,处理消息,又等待消息这个过程循环往复又等待消息这个过程循环往复直到程序运行结束时为止,一直到程序运行结束时为止,一般称这个过程为般称这个过程为消息循环消息
6、循环。2023/4/87主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.1 Windows程序运行机制程序运行机制消息和消息处理:消息和消息处理:q 消息的结构消息的结构MSGMSG:typedeftypedef structstruct tagMSGtagMSG HWND HWND hwndhwnd;UINT message;UINT message;WPARAM WPARAM wParamwParam;LPARAM LPARAM lParamlParam;DWORD time;DWORD
7、time;POINT pt;POINT pt;MSG,*PMSGMSG,*PMSG;2023/4/88主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.1 Windows程序运行机制程序运行机制q MSGMSG数据成员含义:数据成员含义:1 1、hwndhwnd:消息要发送到的应用消息要发送到的应用程序窗口的程序窗口的句柄句柄,如果是在一,如果是在一个有多个窗口的应用程序中用个有多个窗口的应用程序中用此数据成员可此数据成员可决定让哪个窗口决定让哪个窗口接收消息接收消息;2 2、messageme
8、ssage:是是一一个个数数值值用用于于惟一标识一种惟一标识一种消息类型消息类型;2023/4/89主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社3 3、wParamwParam:是是一一个个3232位位的的消消息息数数据据成成员员它它的的确确切切意意义义取取决决于于消息本身;消息本身;4 4、lParamlParam:也也是是一一个个3232位位的的消消息息数数据据成成员员它它的的确确切切意意义义也也取取决于消息本身;决于消息本身;2023/4/810主讲教师:四川大学计算机学院主讲教师:四川
9、大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社 5 5、timetime:消消息息放放入入消消息息队队列列中中的的时时间间,在在这这个个数数据据成成员员中中写写入入的的并并不不是是日日期期而而是是从从WindowsWindows启启动动后后所所测测量量的的时时间间值值用用于于保保持消息正确的顺序持消息正确的顺序;6 6、ptpt:消消息息被被放放入入消消息息队队列列时时的的鼠标坐标鼠标坐标;2023/4/811主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编
10、:李涛 高教出版社7.1 Windows程序运行机制程序运行机制q 被被送送往往应应用用程程序序的的消消息息将将被被应应用用程程序序窗窗口口的的窗窗口口过过程程函函数数所所接接收收,如如程程序序员员编编写写有有相相应应的的函函数数窗窗口口过过程程函函数数将将执执行行对对应应的函数;的函数;q 一一个个消消息息函函数数只只对对应应一一个个消消息息,每每个个消消息息都都有有一一个个专专门门的的函函数数来处理;来处理;q 回顾例回顾例7.17.1;2023/4/812主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛
11、 高教出版社7.1 Windows程序运行机制程序运行机制消息映象机制:消息映象机制:q消消息息映映像像指指MFCMFC类类中中将将消消息息与与消消息息处处理理函函数数联联系系起起来来形形成成一一一一对应的机制;对应的机制;q任任何何一一个个从从类类CCmdTargetCCmdTarget派派生生的的类类都都能能处处理理消消息息都都有有相相应应的的消息映像;消息映像;2023/4/813主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.1 Windows程序运行机制程序运行机制qVCVC中中源源
12、文文件件宏宏BEGIN_MESSAGE_MAPBEGIN_MESSAGE_MAP和和END_MESSAGE_MAPEND_MESSAGE_MAP之之间间的的代代码码为为消息映像代码如象下面程序片段:消息映像代码如象下面程序片段:BEGIN_MESSAGE_MAPBEGIN_MESSAGE_MAP(Cstep(Cstep,CViewCView)/AFX_MSG_MAP(CCircleView)ON_WM_LBUTTONDOWN()ON_WM_LBUTTONLOCK()ON_WM_LBUTTONUP()ON_WM_MOUSEMOVE()/AFX_MSG_MAP END_MESSAGE_MAP()E
13、ND_MESSAGE_MAP()2023/4/814主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社q利利用用ClassWizardClassWizard消消息息处处理理函函数数中加入代码;中加入代码;2023/4/815主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程API和SDKq Windows API(Windows Windows API(Windows
14、 Application Programming Application Programming InterfaceInterface)是所有是所有WindowsWindows应应用程序的基础;用程序的基础;q WindowsWindows应应用用程程序序通通过过调调用用APIAPI来来请请求求操操作作系系统统完完成成一一些些低低级级服务服务;2023/4/816主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社q 应应用用程程序序的的窗窗口口图图标标菜菜单单和和对对话话框框等等都都是是由由APIA
15、PI来来进进行行管管理理和和维护维护的;的;q Windows Windows APIAPI具具有有两两种种基基本本类类型:型:Win16 APIWin16 API和和Win32 APIWin32 API;2023/4/817主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程q WindowsSDKWindowsSDK(Windows(Windows Software Software Development Kit)Development Kit)是一套帮助是
16、一套帮助C+C+语言程序员创建语言程序员创建WindowsWindows应用程序应用程序的工具,它包含:的工具,它包含:1)1)大量的在线帮助帮助描述了大量的在线帮助帮助描述了WindowsWindows编程用到的函数消息结构编程用到的函数消息结构宏及其他资源;宏及其他资源;2)2)各各种种编编程程工工具具比比如如对对话话框框编编辑辑器器及图标编辑器等;及图标编辑器等;2023/4/818主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社3)3)WindowsWindows库及头文件;库及头文件;4
17、)4)使用使用C+C+语言编写的示例程序。语言编写的示例程序。q Win32 Win32 APIAPI可可以以获获得得更更高高的的效效率,使用率,使用MFCMFC更方便。更方便。2023/4/819主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程Windows APIWindows API应用程序的组成应用程序的组成 q Windows APIWindows API应用程序主要由应用程序主要由入口函数入口函数WinMainWinMain和窗口函数和窗口函数构构
18、成,其中还包括各种数据类型、成,其中还包括各种数据类型、数据结构与函数;数据结构与函数;2023/4/820主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社q入口函数入口函数WinMainWinMain()():WinMainWinMain函数是所有函数是所有 Windows Windows 应用程序的入口应用程序的入口,与一般与一般 C C 语语言方式运行程序的言方式运行程序的 main()main()函数函数类似类似,功能为完成初始化操作功能为完成初始化操作,并产生消息循环;并产生消息循环;W
19、inMainWinMain()()函数有函数有3 3个基本组成个基本组成部分:部分:函数说明函数说明,初始化及消初始化及消息循环息循环;2023/4/821主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程1 1、函数说明:函数说明:intint WINAPI WINAPI WinMainWinMain(HINSTANCE HINSTANCE hInstancehInstance,/,/程序实例句柄程序实例句柄 HINSTANCE HINSTANCE hPrev
20、InstancehPrevInstance,/,/为保持与为保持与Win16Win16兼容的句柄兼容的句柄 LPSTR LPSTR lpCmdLInelpCmdLIne,/,/命令行参数命令行参数 intint nCmdShownCmdShow/初始化窗口显示方式初始化窗口显示方式 )2023/4/822主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社2 2、初始化初始化:通通常常是是为为窗窗口口类类的的成成员员变变量量赋赋初值初值,以便创建窗口。以便创建窗口。2023/4/823主讲教师:四川大
21、学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程3 3、消息循环:消息循环:采用消息循环接收消息采用消息循环接收消息在在APIAPI编编程程中中消消息息循循环环一一般般采采用用whilewhile循环语句来实现的:循环语句来实现的:while while(GetMessage(&msgTmpGetMessage(&msgTmp,NULL,0,0)NULL,0,0)/消息循环消息循环 TranslateMessage(&msgTmpTranslateMessage(&msgTm
22、p););/翻译消息翻译消息 DispatchMessage(&msgTmpDispatchMessage(&msgTmp););/将消息传递给处理函数将消息传递给处理函数 2023/4/824主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程GetMessage(&msgTmpGetMessage(&msgTmp,NULL,0,NULL,0,0)0)第一个参数是要接收消息的第一个参数是要接收消息的MSGMSG结结构的构的地址地址第二个参数表示第二个参数表示窗口
23、句柄窗口句柄NULLNULL则表示要获取该应用程序创建则表示要获取该应用程序创建的所有窗口的消息的所有窗口的消息后三个参数被设置为默认值表示接后三个参数被设置为默认值表示接收发送到属于这个应用程序的任何收发送到属于这个应用程序的任何一个窗口的所有消息;一个窗口的所有消息;2023/4/825主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社在接收到除在接收到除WM_QUITWM_QUIT之外的任何之外的任何一个消息后一个消息后GetMessageGetMessage()()都返都返回回TRUE,TR
24、UE,如果如果CetMessageCetMessage收到一收到一个个WM_QUITWM_QUIT消息则返回消息则返回FALSEFALSE结结束消息循环束消息循环TranslateMessageTranslateMessage()()函数进行函数进行翻译它主要是转换成一些键盘翻译它主要是转换成一些键盘消息并为窗口产生相应的消息并为窗口产生相应的ASCIIASCII字符消息;字符消息;2023/4/826主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程Dispa
25、tchMessageDispatchMessage()()函数要求函数要求WindowsWindows将消息传送给在将消息传送给在MSGMSG结结构中为窗口所指定的窗口过程构中为窗口所指定的窗口过程函数;函数;2023/4/827主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社窗口过程函数窗口过程函数WndProcWndProc():():q窗窗口口过过程程函函数数用用来来处处理理消消息息,此此函数的声明如下函数的声明如下:LRESULT CALLBACK LRESULT CALLBACK Wnd
26、ProcWndProc(HWND HWND hWndhWnd,/,/窗口句柄窗口句柄 UINT UINT nMessagenMessage,/所所发发出出的消息的消息 WPARAM WPARAM wParamwParam,/,/参数参数1 1 LPARAM LPARAM lParamlParam/参数参数2 2)2023/4/828主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程q如如果果消消息息处处理理成成功功,WndProcWndProc返返回值为回值为0
27、 0;2023/4/829主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社qWndProcWndProc()()函函数数中中采采用用switchswitch实实现现消息的处理消息的处理2023/4/830主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程APIAPI的程序实例:的程序实例:q例例7.27.2用用APIAPI编编程程实实现现应应用用程程序序窗窗口口要要
28、求求在在窗窗口口中中响响应应鼠鼠标标左左键键,鼠鼠标标右右键键,窗窗口口生生成成和和窗窗口关闭的四个消息;口关闭的四个消息;2023/4/831主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社q用用VC+6.0VC+6.0开开发发APIAPI应应用用程程序序有有两种方法:两种方法:在在任任何何文文本本编编辑辑器器中中编编辑辑源源程程序序文文件件和和头头文文件件然然后后再再加加入入Visual C+6.0Visual C+6.0的工程中;的工程中;VC+6.0VC+6.0的的工工程程中中添添加加源源
29、程程序序文文件件 和和 头头 文文 件件,然然 后后 再再 利利 用用VC+6.0VC+6.0的的编编辑辑器器进进行行编编辑辑,最最后再进行编译和运行;后再进行编译和运行;2023/4/832主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程第二种方法的具体操作步骤:第二种方法的具体操作步骤:1 1、创建、创建Win32 Application:Win32 Application:2023/4/833主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高
30、级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.2 Windows API编程编程2 2、选择、选择“An empty projectAn empty project”;3 3、加入源文件、加入源文件smain7_2.cpp,smain7_2.h,smain7_2.cpp,smain7_2.h,sstdafx7_2.cppsstdafx7_2.cpp、stdafx7_2.hstdafx7_2.h;2023/4/834主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教
31、出版社在在smain7_2.cppsmain7_2.cpp中加入代码,中加入代码,build,runbuild,run得结果:得结果:2023/4/835主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.3 MFC编程编程 MFC(MFC(Microsoft Foundation Microsoft Foundation Class LibraryClass Library)简介:简介:q MFCMFC是是C+C+的类集的类集,MFCMFC提供面向提供面向对象框架,程序员可使用这一对象框架,程序
32、员可使用这一框架容易地创建框架容易地创建WindowsWindows应用程应用程序;序;2023/4/836主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社qMFCMFC按照面向对象的观点以类的按照面向对象的观点以类的层次形式进行组织。高层类提层次形式进行组织。高层类提供一般功能而低层类实现更具供一般功能而低层类实现更具体的行为;体的行为;q每一个低层类都是从高层类中每一个低层类都是从高层类中派生而来并且继承了高层类的派生而来并且继承了高层类的行为;行为;2023/4/837主讲教师:四川大学计算
33、机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.3 MFC编程编程q CWndCWnd类是实现了类是实现了WindowsWindows窗口中窗口中的大多数常用功能的高层类具的大多数常用功能的高层类具备的功能包括打印文本绘制图备的功能包括打印文本绘制图形以及跟踪鼠标指针的移动;形以及跟踪鼠标指针的移动;2023/4/838主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社q MFCMFC能处理很多与能处理很多与Window
34、sWindows相关相关的常见任务,无需在所开发的的常见任务,无需在所开发的每一个每一个WindowsWindows应用程序中编写应用程序中编写相同的消息处理循环,相同的消息处理循环,MFCMFC可以可以实现消息循环并提供易学易用实现消息循环并提供易学易用的成员函数如的成员函数如OnLButtonDownOnLButtonDown()()能插入代码,处理窗口消息;能插入代码,处理窗口消息;2023/4/839主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社qMFCMFC还提供应用程序开发模型之还提
35、供应用程序开发模型之一的文档一的文档/视图模型文档视图模型文档/视图视图模型是将应用程序数据与用户模型是将应用程序数据与用户界面元素分离的一种应用程序界面元素分离的一种应用程序方法;方法;2023/4/840主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.3 MFC编程编程q MFCMFC采用了采用了Windows APIWindows API中的一些功中的一些功能并有对程序员更友好的能并有对程序员更友好的C+C+类使类使之更易于使用;之更易于使用;q MFCMFC由很多由很多C+C+类组成,
36、其中有些类组成,其中有些类例如类例如CWndCWnd或或CWinThreadCWinThread是整个框是整个框架中大部分内容的基础,这些基类架中大部分内容的基础,这些基类封装了基本功能,如大多数封装了基本功能,如大多数WindowsWindows应用程序都需要的打开窗应用程序都需要的打开窗口功能,还有其他更专门化的类例口功能,还有其他更专门化的类例如如 CSplitterWndCSplitterWnd是从这些基类中是从这些基类中派生而来的;派生而来的;2023/4/841主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计
37、 主编:李涛 高教出版社7.3 MFC编程编程MFCMFC的主要类的主要类 q MFCMFC类库主要类类库主要类 1)1)根类根类CObjectCObject类:类:CObjectCObject类是类是MFCMFC的抽象基类,是的抽象基类,是 MFCMFC中大多数类及用户自定子类的中大多数类及用户自定子类的根类,为程序员提供了许多公共操根类,为程序员提供了许多公共操作,这些操作包括对象的建立和删作,这些操作包括对象的建立和删除,对象诊断,输出运行时信息等;除,对象诊断,输出运行时信息等;2023/4/842主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大
38、学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社2)2)应用程序体系结构类:应用程序体系结构类:这这些些类类用用于于构构造造出出应应用用程程序序的的结结构构,提提供供多多数数应应用用程程序序共共用用的的功功能能,这这样样便便实实现现了了编编写写程程序序的的任任务务,就就是是填填充充框框架架,添添加加应应用用程程序序专专用用的的功功能能,简简化化了应用程序的开发;了应用程序的开发;2023/4/843主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.3 MFC编程编程命令相关类命令相关类
39、CCmdTargetCCmdTarget类:类:CCmdTargetCCmdTarget是是CObjectCObject的的子子类类是是MFCMFC库库中中所所有有具具有有消消息息映映像像属属性的类的基类;性的类的基类;消消息息映映像像规规定定了了当当一一对对象象接接收收到到消消息息命命令令时时应应调调用用哪哪一一个个函数对该消息进行处理;函数对该消息进行处理;2023/4/844主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社一一般般都都是是从从CCmdTargetCCmdTarget的的子子类
40、类中中派派生生出出新新类类,如如窗窗口口类类(CWndCWnd)应应用用程程序序类类(CWinAppCWinApp)文文档档模模板板类类 (CDocTemplateCDocTemplate)文文档档类类(CdocumentCdocument)及及 视视 图图 类类 (CviewCview)等;等;2023/4/845主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社窗口应用程序类窗口应用程序类CWinAppCWinApp类:类:每每个个应应用用程程序序有有且且只只有有一一个个应应用用程程序序对对象象
41、,用用于于运运行行程程序序时时此此对对象象与与其其他他对对象象相相互互协协调调,应应用用程程序序对对象象从从CWinAppCWinApp类类中中派派生生出来;出来;窗窗口口应应用用程程序序类类封封装装了了初初始始化运行终止应用程序的代码;化运行终止应用程序的代码;2023/4/846主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.3 MFC编程编程文档文档/视图类:视图类:文文档档对对象象是是由由文文档档模模板板对对象象所所创创建建的的用用于于管管理理应应用用程程序序的的数据;数据;视视图图对
42、对象象表表示示一一个个窗窗口口的的用用户户区区显显示示文文档档数数据据并并允允许许用用户户与其交互;与其交互;2023/4/847主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社文文档档/视视图图类类包包括括以以下下子子类类或或模模板:板:1)CDocTemplate1)CDocTemplate文文档档模模板板的的基基类类文文档档模模板板,用用于于协协调调文文档档视图和框架窗口的创建;视图和框架窗口的创建;2)CSingleDocTemplate2)CSingleDocTemplate单单文文档档
43、界面界面SDISDI的文档模板;的文档模板;2023/4/848主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社3)CMultiDocTemplate3)CMultiDocTemplate多多文文档档界界面面MDIMDI的文档模板;的文档模板;4)CDocument4)CDocument应应用用程程序序专专用用文文档档的基类;的基类;5)CView5)CView用用于于显显示示文文档档数数据据的的应应用程序专有视图的基类;用程序专有视图的基类;2023/4/849主讲教师:四川大学计算机学院主讲教
44、师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.3 MFC编程编程q可视对象类:可视对象类:窗口类窗口类CWndCWnd:CWndCWnd类提供了类提供了MFCMFC中所有窗中所有窗口类的基本功能,是口类的基本功能,是CCmdTargetCCmdTarget类的子类;类的子类;创建一个创建一个WindowsWindows窗口要分两步窗口要分两步进行:进行:1)1)构造一个构造一个CWndCWnd对象;对象;2023/4/850主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C
45、+:面向对象程序设计 主编:李涛 高教出版社2)2)调调用用CreateCreate建建立立WindowsWindows窗窗口口并将它连到并将它连到CWndCWnd对象上;对象上;2023/4/851主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.3 MFC编程编程 MFCMFC中中还还包包括括从从CWndCWnd类类派派生生出出来来的的进进一一步步的的窗窗口口类类型型以以完完成成更更具具体体的的窗窗口口创创建建工工作作,这这些派生类有:些派生类有:1)CFrameWnd1)CFrameWnd
46、框框 架架 窗窗 口口 类类 是是SDISDI应用程序主框架窗口的基类;应用程序主框架窗口的基类;2023/4/852主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社2)CMDIFrameWnd2)CMDIFrameWnd多多文文档档框框架架窗窗口口类类是是MDIMDI应应用用程程序序主主框框架架窗窗口的基类;口的基类;3)CMDIChildWnd3)CMDIChildWnd多多文文档档子子窗窗口口类类是是MDIMDI应应用用程程序序文文档档框框架架窗窗口的基类;口的基类;2023/4/853主讲
47、教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.3 MFC编程编程视图类视图类CViewCView:CViewCView类类用用于于表表示示框框架架窗窗口口的的客户区以及显示文档数据;客户区以及显示文档数据;CViewCView类包括以下子类:类包括以下子类:1)CScrollView1)CScrollView具具有有滚滚动动功功能能的的视图的基类;视图的基类;2)CEditView2)CEditView具具有有文文本本编编辑辑查查找找替换和滚动功能的视图的基类;替换和滚动功能的视图的基类;202
48、3/4/854主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社菜单类菜单类CMenuCMenu类:类:CMenuCMenu类类是是CObjectCObject类类的的子子类类用用于于管管理理菜菜单单,提提供供了了与与窗窗口口有有关关的的菜菜单单资资源源,建建立立修修改改跟跟踪踪及及删除功能的成员函数;删除功能的成员函数;2023/4/855主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.3 MFC
49、编程编程对话框类对话框类CDialogCDialog:CDialogCDialog类类是是从从CWndCWnd类类中中派派生生出来的对话框类;出来的对话框类;它包括如下一些子类:它包括如下一些子类:CFileDialogCFileDialog提提供供用用于于打打开开或或保保存文件的标准对话框;存文件的标准对话框;2023/4/856主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社CColorDialogCColorDialog提提供供用用于于选选择择颜颜色的标准对话框;色的标准对话框;CFontD
50、ialogCFontDialog提提供供用用于于选选择择字字体体的标准对话框;的标准对话框;CPrintDialogCPrintDialog提提供供用用于于打打印印文文件件的标准对话框;的标准对话框;CFindReplaceDialogCFindReplaceDialog提提供供用用于于删删除查找并替换的标准对话框;除查找并替换的标准对话框;2023/4/857主讲教师:四川大学计算机学院主讲教师:四川大学计算机学院 *高级语言程序设计II 四川大学精品课程 C+:面向对象程序设计 主编:李涛 高教出版社7.3 MFC编程编程控制类:控制类:控控制制类类子子层层次次结结构构为为WindowsW