Windows编程入门.pdf
《Windows编程入门.pdf》由会员分享,可在线阅读,更多相关《Windows编程入门.pdf(92页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1VC+的的Windows编程编程入入 门门东南大学成贤学院2本课程简要介绍本课程简要介绍Windows应用程序的形式和在应用程序的形式和在VC+集成开发环境下使用集成开发环境下使用MFC开发开发Windows应用程序的基本应用程序的基本方法,以使同学们对面向对象的可视化(方法,以使同学们对面向对象的可视化(Visual)程序设)程序设计建立一个初步的概念并掌握一些基本方法,为深入学习计建立一个初步的概念并掌握一些基本方法,为深入学习和使用和使用VC+和其他可视化编程工具打下基础。和其他可视化编程工具打下基础。3主题主题WindowsWindows编程概述编程概述使用使用MFCMFC进行进行W
2、indowsWindows编程编程常用控件及其应用常用控件及其应用菜单设计菜单设计41Windows 编程概述编程概述Windows编程的基本特点编程的基本特点Windows编程方法编程方法窗口窗口51.1 Windows编程的基本特点编程的基本特点Windows编程有三个基本特点:编程有三个基本特点:可视化的图形用户界面设计可视化的图形用户界面设计使用面向对象方法编程使用面向对象方法编程采用事件驱动的程序运行方式采用事件驱动的程序运行方式61.可视化的图形用户界面设计可视化的图形用户界面设计我们已经相当熟悉以下小程序:我们已经相当熟悉以下小程序:【例例1.1】#includeusing na
3、mespace std;int main()coutVC+是功能强大的编程工具!是功能强大的编程工具!endl;coutVC+是面向对象的编程工具!是面向对象的编程工具!endl;coutVC+是可视化的编程工具!是可视化的编程工具!endl;return 0;7【例例1.2】#includeusing namespace std;int main()double r;cout”请输入圆半径:”请输入圆半径:”r;cout”圆周长”圆周长”2*3.1416*r endl;cout”圆面积”圆面积”3.1416*r*rendl;return 0;这是基于控制台的文字用户界面应用程序。运行这种程序
4、之这是基于控制台的文字用户界面应用程序。运行这种程序之后,屏幕出现后,屏幕出现MS-DOS窗口,并且按照程序代码的流程执窗口,并且按照程序代码的流程执行,用户输入数据后即显示执行结果。行,用户输入数据后即显示执行结果。89进行进行Windows编程编程,同样可以写出相同功能的程序同样可以写出相同功能的程序,程程序运行出现如序运行出现如图图1和图和图2所示的窗口所示的窗口。图图1中的窗口称为文中的窗口称为文档窗口档窗口,图图2中的窗口称为对话框中的窗口称为对话框。显然显然,它们比它们比MS-DOS的文字用户界面更为友好且方便的文字用户界面更为友好且方便。这种界面称为这种界面称为图形用户界面图形用
5、户界面(GUI,Graphical User Interface)。在非可视化环境下在非可视化环境下,图形用户界面的设计图形用户界面的设计都需通过编写程序代码来实现都需通过编写程序代码来实现,且在设计且在设计过程中是看不到界面的实际显示效果的过程中是看不到界面的实际显示效果的。10Visual C+支持可视化的图形用户界面设计。支持可视化的图形用户界面设计。Windows应用程序的每个图形界面元素(如对话框、菜单、命令按应用程序的每个图形界面元素(如对话框、菜单、命令按钮、文本框等)都是钮、文本框等)都是可视的可视的(Visual),),即设计时在显即设计时在显示器屏幕上是可见的,且所见即所得
6、示器屏幕上是可见的,且所见即所得。编程者可根据具体。编程者可根据具体用户界面设计的要求,直接使用用户界面设计的要求,直接使用VC+系统提供的标准工系统提供的标准工具在屏幕上“具在屏幕上“画画”出各种”出各种Windows风格的图形界面元素,风格的图形界面元素,而不必为这些界面元素的构建设计大量代码,而不必为这些界面元素的构建设计大量代码,VC+VC+会自动会自动生成这些界面元素的设计代码生成这些界面元素的设计代码,开发人员只需为每个图形,开发人员只需为每个图形界面元素设置特定的属性值,代码编写只针界面元素设置特定的属性值,代码编写只针对界面元素所要实现的具体功能。对界面元素所要实现的具体功能。
7、112.面向对象编程方式面向对象编程方式由于由于Windows应用程序的复杂性,从图形用户界面到整个应用程序的复杂性,从图形用户界面到整个应用程序,都是采用面向对象的方法组织的。应用程序,都是采用面向对象的方法组织的。Windows中中的的对象对象可以是所有的规范部件,如窗口、菜单、工具栏、可以是所有的规范部件,如窗口、菜单、工具栏、按钮、文本框、以及程序模块等按钮、文本框、以及程序模块等。从从用户的观点看,用户的观点看,Windows应用程序有一个窗口,窗口上应用程序有一个窗口,窗口上有若干菜单、命令按钮、图标等界面图形元素;有若干菜单、命令按钮、图标等界面图形元素;而窗口背后是一些对应的程
8、序。而窗口背后是一些对应的程序。从从MFC的面向对象模型看,一个的面向对象模型看,一个Windows应应用程序可以拆分成许多功能独立的对象,各用程序可以拆分成许多功能独立的对象,各自负责不同类型的工作,其最基本的构成对象可以分为两大自负责不同类型的工作,其最基本的构成对象可以分为两大类:类:程序对象程序对象和和窗口对象窗口对象。12一个应用程序的执行就像一场舞台演出。应用程序对象是幕后人员一个应用程序的执行就像一场舞台演出。应用程序对象是幕后人员(导演、剧务等),它们负责安排并指挥“演员”(窗口)上场,准(导演、剧务等),它们负责安排并指挥“演员”(窗口)上场,准备和调度各种演出“资源”(如菜
9、单、工具栏、图标等)。从操作系备和调度各种演出“资源”(如菜单、工具栏、图标等)。从操作系统来看,具有“法人”地位的是应用程序对象而非窗口对象,应用程统来看,具有“法人”地位的是应用程序对象而非窗口对象,应用程序可以占有序可以占有CPU时间和内存空间,还可拥有演出所需的“资源”。时间和内存空间,还可拥有演出所需的“资源”。Windows系统给每个对象分配一个系统给每个对象分配一个句柄句柄(handle),),它是一个它是一个4 4字节长的整数值,字节长的整数值,是对象的唯一内部编号是对象的唯一内部编号。应用程序通过句柄。应用程序通过句柄访问相应的对象。每个对象除了句柄外,还访问相应的对象。每个
10、对象除了句柄外,还有一个对象标识符有一个对象标识符IDID,可看作是对象的外可看作是对象的外部名。部名。ID与句柄的区别主要在于:与句柄的区别主要在于:ID可以是可以是用户自行设定的;而句柄是系统内定的,对用户自行设定的;而句柄是系统内定的,对用户是透明的,这能防止应用程序直接访问用户是透明的,这能防止应用程序直接访问对象的内部信息。对象的内部信息。133.事件驱动的程序运行机制事件驱动的程序运行机制传统的文字用户界面的应用程序都有一个起点和终点,程传统的文字用户界面的应用程序都有一个起点和终点,程序中的各模块(函数或对象)的控制过程和执行顺序是在序中的各模块(函数或对象)的控制过程和执行顺序
11、是在编写程序时精心设置好的,是预知的、确定的,整个程序编写程序时精心设置好的,是预知的、确定的,整个程序的运行过程是明确的。这种程序运行机制称为过程驱动。的运行过程是明确的。这种程序运行机制称为过程驱动。Windows应用程序则采用的是事件驱动的程序运行机制:应用程序则采用的是事件驱动的程序运行机制:事件发出消息,消息激活对象。事件发出消息,消息激活对象。即应用程序的运行没有严格的起点和终点以及固即应用程序的运行没有严格的起点和终点以及固定的流程,各对象之间没有规定的执行顺序,定的流程,各对象之间没有规定的执行顺序,即程序的运行过程是不明确的,而是由事件即程序的运行过程是不明确的,而是由事件及
12、其消息控制着对象的激活和程序的运行过程。及其消息控制着对象的激活和程序的运行过程。对象通常处于循环休眠状态,当发生了某个事件并有相应对象通常处于循环休眠状态,当发生了某个事件并有相应消息传递给对象,才会按照消息的指示执行程序代码,一消息传递给对象,才会按照消息的指示执行程序代码,一次消息的处理工作完毕后又恢复休眠状态以等待下一个事次消息的处理工作完毕后又恢复休眠状态以等待下一个事件的发生及其消息的到来。件的发生及其消息的到来。14事件事件(event)是什么?事件的含义很广泛,简单地说,)是什么?事件的含义很广泛,简单地说,事事件就是激活对象执行程序代码的一种动作件就是激活对象执行程序代码的一
13、种动作。在在Windows的操作环境中,无论系统产生的动作还是运行程的操作环境中,无论系统产生的动作还是运行程序时用户产生的动作都称为事件。最常见的用户事件是鼠标序时用户产生的动作都称为事件。最常见的用户事件是鼠标事件和键盘事件。实际上,任何一个拥有设备驱动程序的系事件和键盘事件。实际上,任何一个拥有设备驱动程序的系统输入设备(包括端口)都可以产生各种事件,发送自己的统输入设备(包括端口)都可以产生各种事件,发送自己的消息。消息。消息消息(message)是)是Windows定义定义(WinUser.h头文件)的头文件)的一种特殊的数据一种特殊的数据结构(结构(MSG),它打包了“事件”发生)
14、,它打包了“事件”发生的相关信息的相关信息,例如:消息接收者的句柄、,例如:消息接收者的句柄、事件的类型和来源、消息参数等。事件的类型和来源、消息参数等。15Windows系统有各种各样的消息,消息的传递无时不在发系统有各种各样的消息,消息的传递无时不在发生,即使电脑闲置时,还会有系统时间的消息传递出来。生,即使电脑闲置时,还会有系统时间的消息传递出来。任何一个看似十分简单的动作都会引发窗口之间许多消息任何一个看似十分简单的动作都会引发窗口之间许多消息的交换。在的交换。在VC+中,中,什么对象可以产生或接收什么事件,是由什么对象可以产生或接收什么事件,是由MFCMFC规定的规定的。例如,命令按
15、钮有鼠标单击(例如,命令按钮有鼠标单击(BN_CLICKED)和双击)和双击(BN_DOUBLECLICKED)事件;)事件;文本编辑框有改变文本(文本编辑框有改变文本(EN_CHANGE)、接受输入焦点(、接受输入焦点(EN_SETFOCUS)、)、失去输入焦点(失去输入焦点(EN_KILLFOCUS)、)、单击垂直滚动条(单击垂直滚动条(EN_VSCROLL)等事件。)等事件。16当在对象上发生了某个事件并发出了相应的消息后当在对象上发生了某个事件并发出了相应的消息后,接收接收者对象就要响应并处理该消息者对象就要响应并处理该消息。每个需要响应的消息要求每个需要响应的消息要求对应一个处理该消
16、息的程序对应一个处理该消息的程序事件驱动程序事件驱动程序。响应响应消息就是启动相应的事件驱动程序消息就是启动相应的事件驱动程序。Windows中将响应中将响应消息的过程称为消息的过程称为消息映射消息映射。171.2 Windows编程方法编程方法使用使用VC+进行进行Windows编程有两种方法:编程有两种方法:基于基于Windows API函数的编程方法函数的编程方法基于基于Microsoft MFC的编程方法的编程方法181.基于基于Windows API函数的编程方法函数的编程方法APIAPI是应用程序编程接口(是应用程序编程接口(Application Programming Inte
17、rface)的缩写,是)的缩写,是Windows操作系统与操作系统与Windows应应用程序之间的标准接口。作为用程序之间的标准接口。作为Windows操作系统的组成操作系统的组成部分(部分(shell),),API提供了提供了1000多个可供应用程序直接调多个可供应用程序直接调用的用的C函数(在函数(在Windows API参考手册中有详细介绍),参考手册中有详细介绍),这些函数大致可分为三类:这些函数大致可分为三类:窗口管理函数窗口管理函数:实现窗口的创建、移动和修改功能。:实现窗口的创建、移动和修改功能。图形设备接口函数图形设备接口函数:实现与具体显示设备无关的图形操:实现与具体显示设备
18、无关的图形操作。作。系统服务函数系统服务函数:实现操作系统提供的各种实用服务功能。:实现操作系统提供的各种实用服务功能。19使用使用API设计设计Windows应用程序,对于理解和掌握面应用程序,对于理解和掌握面向对象程序设计的思想和方法是相当关键的,是想成为向对象程序设计的思想和方法是相当关键的,是想成为Windows编程高手的必经之路。但它要求编程者必须熟编程高手的必经之路。但它要求编程者必须熟知知Windows应用程序的架构、事件驱动以及消息传递等应用程序的架构、事件驱动以及消息传递等内部机制,并且仍然必须编写大量代码,即它要求编程者内部机制,并且仍然必须编写大量代码,即它要求编程者具备
19、较高的专业素质,这对初学者来说无疑是比较困难的。具备较高的专业素质,这对初学者来说无疑是比较困难的。当然,使用当然,使用API编程更具灵活性和个性化。编程更具灵活性和个性化。API支持所有支持所有Windows应用程序的开发系统,应用程序的开发系统,如如VC+、VB、Java等。等。202.2.基于基于Microsoft MFCMicrosoft MFC的编程方法的编程方法MFCMFC是是微软基础类库微软基础类库(Microsoft Foundation Class)的缩写。与的缩写。与API不同,不同,MFC不是不是Windows操作系统的组成操作系统的组成部分,而是微软公司专为部分,而是微
20、软公司专为VC+开发的配套软件包。与开发的配套软件包。与VC6配套的是配套的是MFC6.0。MFC充分使用了面向对象方法中的继承和多态性技术,以充分使用了面向对象方法中的继承和多态性技术,以类的方式封装了类的方式封装了Windows应用程序所涉及的几应用程序所涉及的几乎所有的标准部件,如乎所有的标准部件,如Windows应用程序的应用程序的架构、各种标准的图形界面元素、其核心是架构、各种标准的图形界面元素、其核心是它以它以C+的形式封装了的形式封装了Windows API的大部分函数。的大部分函数。21MFC是一个很大的类层次体系(是一个很大的类层次体系(MFC6.0中包含了中包含了200多个
21、多个类),它由一个称为类),它由一个称为CObjectCObject的类作为根基类,其他类大的类作为根基类,其他类大部分从该类派生而来,其整个类体系可大致划分为:部分从该类派生而来,其整个类体系可大致划分为:基类基类应用程序框架类应用程序框架类。包括:应用程序类、命令类、文档包括:应用程序类、命令类、文档/视窗类、框架窗口类、文档模板类等视窗类、框架窗口类、文档模板类等可视对象类可视对象类。包括:窗口类、对话框类、控件类等包括:窗口类、对话框类、控件类等绘图类绘图类。包括:绘图工具类、设备描述表类等。包括:绘图工具类、设备描述表类等。简单数据类型类简单数据类型类通用类通用类包括:数组类、类表类
22、、映像类包括:数组类、类表类、映像类文件和数据库类文件和数据库类包括:文件包括:文件I/OI/O类、类、ODBCODBC类、类、ADOADO类类Internet和网络工作类和网络工作类包括:包括:Win32 InternetWin32 Internet类、类、Windows SocketWindows Socket类等类等对象链接和嵌入对象链接和嵌入(OLE,Object Lingking and Embedding)类类调试和异常类调试和异常类22事实上,事实上,MFC封装了一个封装了一个Windows应用程序操作的每一应用程序操作的每一方面,因此使用方面,因此使用MFC编程,编程者可以把注
23、意力集中于自己程编程,编程者可以把注意力集中于自己程序所特有的部分,不需要事事亲自动手。与直接调用序所特有的部分,不需要事事亲自动手。与直接调用API函数函数相比,这将大大减少编程者编写的代码数量,使编程工作变得相比,这将大大减少编程者编写的代码数量,使编程工作变得更容易;同时,程序标准部分由更容易;同时,程序标准部分由MFC的类来提供,可使程序变的类来提供,可使程序变得更规范,更具可读性,效率也更高。得更规范,更具可读性,效率也更高。对编程新手来说,对编程新手来说,MFC的最大优点是它以高效简洁的方式的最大优点是它以高效简洁的方式为编程者做了所有标准部分的工作,特别是编程者可以在不需为编程者
24、做了所有标准部分的工作,特别是编程者可以在不需要写一行代码的情况下完成一个完整的应用要写一行代码的情况下完成一个完整的应用程序架构程序架构(约需千行代码)。(约需千行代码)。MFC中包含了成中包含了成千上万行功能强大的、经过优化的千上万行功能强大的、经过优化的Windows程序代码。编程者只要定义了某个程序代码。编程者只要定义了某个MFC类的对象,就可以调用类的对象,就可以调用该类的成员函数,轻轻松松完成本该由你自己一行行编写的程该类的成员函数,轻轻松松完成本该由你自己一行行编写的程序代码。从这点上说,序代码。从这点上说,MFC极大地降低了程序开发难度,。极大地降低了程序开发难度,。231.3
25、 窗窗 口口窗口窗口是是Windows图形用户界面的最基本和最重要的部图形用户界面的最基本和最重要的部件,每一个件,每一个Windows程序至少有一个窗口。故程序至少有一个窗口。故Windows图形用户界面也称窗口界面。图形用户界面也称窗口界面。241.框架窗口框架窗口框架窗口是应用程序的主窗口,负责管理其包容的其框架窗口是应用程序的主窗口,负责管理其包容的其他窗口。一个应用程序的最顶层的框架窗口是应用程序启他窗口。一个应用程序的最顶层的框架窗口是应用程序启动时创建的第一个窗口。动时创建的第一个窗口。MFC提供了由基类提供了由基类CWnd(窗口类)派生的(窗口类)派生的4个框架个框架窗口类:窗
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 编程 入门
限制150内