Windows编程基础和MFC编程基础.ppt
《Windows编程基础和MFC编程基础.ppt》由会员分享,可在线阅读,更多相关《Windows编程基础和MFC编程基础.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第9章 Windows编程基础和MFC编程基础张家华张家华 2008.5.052008.5.05浙江师范大学教育技术学系浙江师范大学教育技术学系第第9 9章章 WindowsWindows编程基础和编程基础和MFCMFC编程基础编程基础nVisual C+Visual C+开发面向对象开发面向对象WindowsWindows应用程序的两种主要方法:应用程序的两种主要方法:n使使用用Windows Windows APIAPI(Application Application Programming Programming InterfaceInterface,应应用用程程序编程接口)函数,序编程
2、接口)函数,n利用利用MFCMFC(Microsoft(Microsoft Foundation Class Foundation Class,微软基础类库,微软基础类库)类库。类库。nWindows APIWindows API是是WindowsWindows系统和应用程序间的标准接口,为应用程系统和应用程序间的标准接口,为应用程序提供序提供WindowsWindows支持的函数定义、参数定义和消息格式等。支持的函数定义、参数定义和消息格式等。nMFCMFC类类库库包包括括用用来来开开发发C+C+应应用用程程序序和和WindowsWindows应应用用程程序序的的一一组组类类,这这些些类类用
3、用来来表表示示窗窗口口、对对话话框框、设设备备上上下下文文、公公共共GDIGDI对对象象如如画画笔笔、调调色色板板、控控制制框框和和其其它它标标准准的的WindowsWindows部部件件,封封装装了了大大部部分分的的Windows APIWindows API函数。函数。第第9 9章章 WindowsWindows编程基础和编程基础和MFCMFC编程基础编程基础v 9.1 9.1 WindowsWindows编程基础编程基础v 9.2 9.2 MFCMFC编程基础编程基础9.1 Windows9.1 Windows编程基础编程基础WindowsWindows系系统统支支持持多多个个应应用用程
4、程序序同同时时执执行行,在在界界面面形形式式上上,它它支支持持多多个个窗窗口口同同时时活活动动。它它的的运行机制是运行机制是“消息传递,事件驱动消息传递,事件驱动”。1.1.消息传递消息传递 2 2 事件驱动事件驱动 3.3.Windows API Windows API 4.4.WindowsWindows数据类型与变量的命名规则数据类型与变量的命名规则 1.消息传递n消息是一种报告有关事件发生的通知,类似于消息是一种报告有关事件发生的通知,类似于DOSDOS下的下的用户输入。用户输入。nWindowsWindows应用程序是由消息驱动的。应用程序是由消息驱动的。WindowsWindows
5、系统下每系统下每一个应用程序窗口都维护一个消息队列,操作系统接收一个应用程序窗口都维护一个消息队列,操作系统接收和管理所有输入消息、系统消息,并把它们发送给相应和管理所有输入消息、系统消息,并把它们发送给相应窗口的消息队列。应用程序初始化完成后,进入消息循窗口的消息队列。应用程序初始化完成后,进入消息循环,维护自己的消息队列,从中取出消息,并进行处理。环,维护自己的消息队列,从中取出消息,并进行处理。n编写消息处理函数是编写消息处理函数是WindowsWindows编程的主要工作之一。编程的主要工作之一。Windows应用程序的消息来源有以下四种:(1)(1)输输入入消消息息:包包括括键键盘盘
6、和和鼠鼠标标的的输输入入。这这类类消消息息首首先先放放在在系系统统消消息息队队列列中中,然然后后由由WindowsWindows将将它它们们送送入入应应用用程程序序消消息息队队列列中中,由由应应用用程程序序来来处理消息。处理消息。(2(2)控控制制消消息息:用用来来与与WindowsWindows的的控控制制对对象象,如如列列表表框框、按按钮钮、检检查查框框等等进进行行双双向向通通信信。当当用用户户在在列列表表框框中中改改动动当当前前选选择择或或改改变变了了检检查查框框的的状状态态时时发发出出此此类类消消息息。这这类类消消息息一一般般不不经经过过应应用用程程序序消消息息队队列列,而而是是直直接
7、接发发送送到控制对象上去。到控制对象上去。(3)(3)系系统统消消息息:对对程程序序化化的的事事件件或或系系统统时时钟钟中中断断作作出出反反应应。一一些些系系统统消消息息,像像DDEDDE消消息息要要通通过过WindowsWindows的的系系统统消消息息队队列列,而而有有的的则则不不通通过过系系统统消消息队列而直接送入应用程序的消息队列,如创建窗口消息。息队列而直接送入应用程序的消息队列,如创建窗口消息。(4)(4)用户消息用户消息:这是程序员自己定义并在应用程序中主动发出的,一:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理。般由应用程序的某一部分内部处理。W
8、indowsWindows消息消息WindowsWindows消息是在消息是在WindowsWindows文件中用宏定义的常数。消息常文件中用宏定义的常数。消息常数名通常以数名通常以WMWM开头,格式为开头,格式为WM_XXXWM_XXX。在。在winuser.hwinuser.h中,消息结中,消息结构的定义如下:构的定义如下:typedef struct tagMSG HWND hWnd;/指定消息发向的窗口句柄指定消息发向的窗口句柄UINT message;/标识消息的消息值标识消息的消息值WPARAM wParam;/消息参数消息参数LPARAM lParam;/消息参数消息参数DWOR
9、Dtime;/消息进入队列的时间消息进入队列的时间POINTpt;/消息进入队列时鼠标指针的屏幕坐标消息进入队列时鼠标指针的屏幕坐标MSG,*PMSG,NEAR*NPMSG,FAR*LPMSG;WindowsWindowsWindowsWindows程序和程序和程序和程序和WindowsWindowsWindowsWindows消息处理的基本流程消息处理的基本流程消息处理的基本流程消息处理的基本流程 2 事件驱动WindowsWindows系系统统使使用用事事件件驱驱动动的的编编程程模模式式。事事件件用用来来标标识识发发生的某件事情生的某件事情,主要采用以下三种方式产生:主要采用以下三种方式产
10、生:n(1)(1)通过输入设备,如键盘和鼠标。通过输入设备,如键盘和鼠标。n(2)(2)通通过过屏屏幕幕上上的的可可视视对对象象,如如菜菜单单、工工具具栏栏按按钮钮、滚动条和对话框上的控件。滚动条和对话框上的控件。n(3)(3)来自来自WindowsWindows内部。内部。句柄句柄 句句句句 柄柄柄柄是是WindowsWindows编编程程的的一一个个关关键键性性的的概概念念,编编写写WindowsWindows应用程序总是要和各种句柄打交道。应用程序总是要和各种句柄打交道。n所所谓谓句句柄柄,就就是是一一个个唯唯一一的的整整数数值值,是是一一个个4 4字字节节长长的的数数值值,用用以以标标
11、识识许许多多不不同同的的对对象象类类型型,如如窗窗口口、菜菜单单、内内存、画笔、画刷和文件等。存、画笔、画刷和文件等。n由由于于WindowsWindows是是一一个个多多任任务务操操作作系系统统,它它可可以以同同时时运运行行多多个个程程序序或或一一个个程程序序的的多多个个副副本本。WindowsWindows不不仅仅使使用用句句柄柄来来管管理理实实例例,也也用用它它来来管管理理窗窗口口、位位图图、字字体体、元元文文件件和和图标等系统资源。图标等系统资源。n常常见见的的WindowsWindows对对象象句句柄柄如如表表9.19.1所所示示,所所有有的的句句柄柄类类型型以以H H开头。开头。3
12、.Windows API Windows Windows APIAPI是是应应用用程程序序编编程程接接口口的的英英文文缩缩写写。它它是是大大量量函函数数加加上上数数字字常常量量、宏宏、结结构构、类类型型以以及及其其它它相相关关项项的的集集合合。在在WindowsWindows应应用用程程序序中中,调调用用APIAPI函函数数的的方方法法同同调调用用C C库库函函数数的的方方法法相相同同,重重要要区区别别是是C C库库函函数数的的目目标标代代码码直直接接放放到到程程序序目目标标代代码码中中,而而APIAPI函函数数的的目目标标代代码码则则位位于于程程序序之之外外的的某某个个动动态态链链接库(接库
13、(DLLDLL)中。中。Windows Windows APIAPI是是包包含含在在WindowsWindows操操作作系系统统中中的的,另另外外还还有有单单独独的的驱驱动动程程序序开开发发包包(DDKDDK),用用来来开开发发WindowsWindows驱驱动动程程序序。因因为为Windows Windows APIAPI函函数数本本身身是是用用C C语语言言编编写写的的,所所以以C/C+C/C+编编程程可可以以很很方方便便地地利利用用计计算算机机的的底底层层资资源源,程程序序运运行行速速度度远远远远高高于于其它语言。其它语言。【例9.1】一个简单的Windows32应用程序。#includ
14、eint APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPreinstance,LPSTR lpCmdLine,int nCmdshow)MessageBox(NULL,一个简单的Win32应用程序,例9.1,MB_OK);return 0;4.Windows数据类型与变量的命名规则nWindows APIWindows API自定义了一些关键字,用来定义自定义了一些关键字,用来定义WindowsWindows函数中的有关参数和返回值的大小和意义,函数中的有关参数和返回值的大小和意义,通常把它们看作通常把它们看作WindowsWindows的数
15、据类型,常用的如表的数据类型,常用的如表9.29.2所示。所示。n在编程时,变量、函数的命名是一个极其重在编程时,变量、函数的命名是一个极其重要的问题。好的命名方法使变量易于记忆且增加要的问题。好的命名方法使变量易于记忆且增加程序的可读性。程序的可读性。MicorsoftMicorsoft采用匈牙利采用匈牙利(HungarianHungarian)命名法来命名命名法来命名Windows APIWindows API函数和函数和变量。匈牙利命名法为变量。匈牙利命名法为C+C+标识符的命名定义了一标识符的命名定义了一种非常标准化的方式,以下述两条规则为基础:种非常标准化的方式,以下述两条规则为基础
16、:n(1)标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据类型。表9.3列出了常用数据类型的标准前缀。n(2)在标识符内,前缀之后就是一个或多个首字母大写的单词,这些单词明确指出源程序中那个对象的用途。例如,m_szPersonAddress表示一个人住址的类数据成员,数据类型是字符串。9.2 MFC9.2 MFC编程基础编程基础v9.2.1 9.2.1 MFCMFC编程概述编程概述v9.2.2 9.2.2 MFCMFC的类层次的类层次v9.2.3 9.2.3 常用的常用的MFCMFC类类v9.2.4 9.2.4 MFCMFC应用程序的消息映射应用程序的消息映射v9.2.5 9.2
17、.5 一个最简单的一个最简单的MFCMFC应用程序应用程序v9.2.6 9.2.6 典型的典型的WindowsWindows应用程序应用程序9.2.1 MFC9.2.1 MFC编程概述编程概述(1/2)(1/2)nMFC类库作为C+与Windows的接口,建立在Win32应用程序编程接口API之上,封装了大多数的API函数,主要是API中与程序结构相关的部分和最常用的部分。MFC还封装了重要的Windows扩展,如COM,ActiveX,ODBC和Internet APIs,为这些难以编程实现的功能提供了简便方法。nMFC中的各种类结合起来构成了一个应用程序框架,让程序员在此基础上来建立Win
18、dows下的应用程序。MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。Visual C+提供了相应的工具来完成这个工作:AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于直观地设计用户界面;ClassWizard用来协助添加代码到框架文件;最后进行编译,则通过类库实现了应用程序特定的逻辑。n在MFC编程中,入口函数WinMain()被封装在MFC的应用程序框架内,已经不用也不可以再定义为另一个WinMain()函数。nMFC编程最好的办法是使用MFC的应用程序向导工具AppWiza
19、rd。AppWizard为程序员提供了一种快捷方便的工具来定制基于MFC的应用程序框架,程序员只需以此为基础,添加与修改程序代码来实现所需功能。9.2.1 MFC9.2.1 MFC编程概述编程概述(2/2)(2/2)9.2.2 MFC9.2.2 MFC的类层次的类层次nMFCMFC中中的的类类可可划划分分为为根根类类、应应用用程程序序结结构构类类、窗窗口口类类、OLEOLE类类、数数据据库库类类等等十十个个大大类类,在在其中一些大类的基础上又派生出许多子类。其中一些大类的基础上又派生出许多子类。n各个类的具体定义参见文件各个类的具体定义参见文件Afxwin.hAfxwin.h。1.1.根类根类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 编程 基础 MFC
限制150内