第七章 Visual C++编程基础.ppt
《第七章 Visual C++编程基础.ppt》由会员分享,可在线阅读,更多相关《第七章 Visual C++编程基础.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七章 Visual C+编程基础 第七 C+ 编程 基础
限制150内