ch3Windows编程的概念.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《ch3Windows编程的概念.pdf》由会员分享,可在线阅读,更多相关《ch3Windows编程的概念.pdf(67页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Windows程序设计程序设计Windows Programming数学实验与软件设计中心阮宗利数学实验与软件设计中心阮宗利Windows编程的概念编程的概念WindowsWindows编程的概念编程的概念编程的概念编程的概念Ch3Ch32Ch3 Windows编程的概念编程的概念学习目的学习目的学习学习C+中与所有中与所有Windows程序都有关的基本概念,了解程序都有关的基本概念,了解Windows应用程序的幕后工作原理,进而有助于我们使用应用程序的幕后工作原理,进而有助于我们使用VC2005开发开发Windows应用程序。应用程序。3Ch3 Windows编程的概念编程的概念主要内容主要
2、内容Windows 程序与操作系统程序与操作系统事件驱动、事件驱动、Windows消息消息Windows API程序及基本结构程序及基本结构MFC 程序程序Windows Forms 程序程序4Ch3 Windows编程的概念编程的概念1 Windows编程基础编程基础?使用使用VC2005创建交互式创建交互式Windows应用程序的三种方法应用程序的三种方法使用使用使用使用Windows APIWindows APIWindows操作系统为其自身与在其操作系统为其自身与在其控制下执行的应用程序之间通信而控制下执行的应用程序之间通信而提供的基本接口;提供的基本接口;使用使用使用使用MFCMFC
3、一组封装了一组封装了Windows API的的C+类;类;使用使用使用使用Windows Windows FormsForms基于窗体的开发机制,用于创建在基于窗体的开发机制,用于创建在CLR中执行的应用程序;中执行的应用程序;5Ch3 Windows编程的概念编程的概念1 Windows编程基础编程基础?三种方法的比较三种方法的比较使用使用使用使用Windows APIWindows API至始至终地编写代码,构成应用程序至始至终地编写代码,构成应用程序GUI的所有元素都必须以编程方式创的所有元素都必须以编程方式创建,一般不采用该方式;建,一般不采用该方式;使用使用使用使用MFCMFC在构建
4、在构建GUI方面得到一些帮助,可以方面得到一些帮助,可以在窗体上以图形方式布置控件,只需在窗体上以图形方式布置控件,只需对程序与用户之间的交互作用进行编对程序与用户之间的交互作用进行编程,但是仍然要编写大量的代码;程,但是仍然要编写大量的代码;使用使用使用使用Windows Windows FormsForms图形方式布置控件,以构建完整的图形方式布置控件,以构建完整的GUI,需要编写的代码大为减少,是,需要编写的代码大为减少,是目前最快、最简单的机制;目前最快、最简单的机制;6Ch3 Windows编程的概念编程的概念1 Windows编程基础编程基础?MFC VS Windows Form
5、s1编程工作量编程工作量MFC Windows Forms2创建创建GUI的方式的控制权的方式的控制权MFC Windows Forms3执行执行MFC本地本地PC上,上,Windows Forms在在CLR内内7Ch3 Windows编程的概念编程的概念1.1 窗体的构成窗体的构成标题栏标题栏文本状态栏标题栏图标菜单栏工具栏子窗口图标MDI子窗口MDI父窗口(0,0)xy最小化最大化关闭父窗口客户区子窗口客户区大小边框大小手柄8Ch3 Windows编程的概念编程的概念1.1 窗体的构成窗体的构成?菜单可能是最常用的控制应用程序的方式;菜单可能是最常用的控制应用程序的方式;?菜单的内容和窗体
6、中显示的许多对象的外观,例如工具栏的图标、光标,都是由资源文件定义的;菜单的内容和窗体中显示的许多对象的外观,例如工具栏的图标、光标,都是由资源文件定义的;?工具栏提供的一组图标通常是作为最常用的一些菜单项的替代,使用户操作更容易、快捷;工具栏提供的一组图标通常是作为最常用的一些菜单项的替代,使用户操作更容易、快捷;?事实上,几乎任何可以显示的实体都是窗体,例如对话框、按钮、标签等。事实上,几乎任何可以显示的实体都是窗体,例如对话框、按钮、标签等。9Ch3 Windows编程的概念编程的概念1.2 Windows程序与操作系统程序与操作系统?Windows程序是在程序是在Windows操作系统
7、的控制下运行的,它们不能直接处理鼠标、键盘等硬件,与外部所有的通信都必须通过操作系统的控制下运行的,它们不能直接处理鼠标、键盘等硬件,与外部所有的通信都必须通过Windows进行。进行。?使用使用Windows程序时,用户主要是与程序时,用户主要是与Windows交互,然后再由交互,然后再由Windows代表用户与应用程序通信。代表用户与应用程序通信。?为什么?为什么?Windows中,多个同时执行的程序共享计算机资源,中,多个同时执行的程序共享计算机资源,Windows必须拥有首要的控制权来管理机器资源的共享;必须拥有首要的控制权来管理机器资源的共享;Windows体现了一种标准的体现了一种
8、标准的GUI,需要负责实施这种标准,只能使用,需要负责实施这种标准,只能使用Windows提供的工具在屏幕上显示信息,而且只能在授权的情况下这样做。提供的工具在屏幕上显示信息,而且只能在授权的情况下这样做。10Ch3 Windows编程的概念编程的概念1.3 事件驱动程序事件驱动程序?Windows程序是事件驱动的,因此程序要等待某个事件发生。程序是事件驱动的,因此程序要等待某个事件发生。所需有意义的代码部分专用于处理外部用户动作引发的事件;所需有意义的代码部分专用于处理外部用户动作引发的事件;但是,与应用程序没有直接关系的活动仍然可能要求执行大量的程序代码;但是,与应用程序没有直接关系的活动
9、仍然可能要求执行大量的程序代码;例如,程序窗体的客户区被其它窗体部分覆盖,则被覆盖的应用程序需要重画窗体。例如,程序窗体的客户区被其它窗体部分覆盖,则被覆盖的应用程序需要重画窗体。11Ch3 Windows编程的概念编程的概念1.4 Windows消息消息?Windows程序中的事件指用户单击鼠标、用户按下键盘某个键、定时器归零等这样一些事件。程序中的事件指用户单击鼠标、用户按下键盘某个键、定时器归零等这样一些事件。?操作系统将每个事件记录在一条消息中,并将该消息送入目标程序的消息队列中。操作系统将每个事件记录在一条消息中,并将该消息送入目标程序的消息队列中。?通过发送消息,通过发送消息,Wi
10、ndows可以告诉程序可以告诉程序 某件事情需要完成某件事情需要完成 某种信息已经可用某种信息已经可用 某个像鼠标单击这样的事件已经发生某个像鼠标单击这样的事件已经发生?如果程序以适当的方式组织,则将以适当的方式响应消息。如果程序以适当的方式组织,则将以适当的方式响应消息。?消息种类很多,消息可能频繁出现,例如移动鼠标消息种类很多,消息可能频繁出现,例如移动鼠标12Ch3 Windows编程的概念编程的概念1.4 Windows消息消息?WndProc()或或WindowProc()函数:用于处理消息,函数:用于处理消息,Windows程序必须包含。程序必须包含。通过实参给程序传递任何必要的数
11、据,如鼠标的位置;通过实参给程序传递任何必要的数据,如鼠标的位置;在该函数内,程序员根据参数的数据,确定消息的意义及应该采取的动作。在该函数内,程序员根据参数的数据,确定消息的意义及应该采取的动作。?DefWindowProc():Windows提供的标准函数提供的标准函数 不必编写处理所有消息的代码,仅对程序关心的消息作必要的处理;不必编写处理所有消息的代码,仅对程序关心的消息作必要的处理;该函数提供默认的消息处理功能,将程序不关心的消息回传给该函数提供默认的消息处理功能,将程序不关心的消息回传给Windows。13Ch3 Windows编程的概念编程的概念1.5 Windows API?任
12、何任何Windows应用程序与应用程序与Windows本身之间的所有通信,都要使用本身之间的所有通信,都要使用Windows应用程序编程接口应用程序编程接口Windows API;?该接口由多达数百个函数组成该接口由多达数百个函数组成 它们是它们是Windows操作系统提供的标准函数,可以提供应用程序与操作系统提供的标准函数,可以提供应用程序与Windows相互通信的手段;相互通信的手段;?Windows API是用是用C语言开发的,因此经常用来在语言开发的,因此经常用来在Windows和应用程序之间传递数据的类型是结构而不是类。和应用程序之间传递数据的类型是结构而不是类。14Ch3 Wind
13、ows编程的概念编程的概念1.5 Windows API?Windows API覆盖了覆盖了Windows与应用程序之间通信的所有方面;与应用程序之间通信的所有方面;?函数数量众多,在自然状态下使用它们可能非常困难,仅仅理解它们的功能都是一项艰苦的工作;函数数量众多,在自然状态下使用它们可能非常困难,仅仅理解它们的功能都是一项艰苦的工作;?VC2005在某种程度上对在某种程度上对Windows API进行了包装,以面向对象的方式重新组织了这些进行了包装,以面向对象的方式重新组织了这些API,并提供了更容易的、在,并提供了更容易的、在C+中以更多默认功能使用该接口的方法;中以更多默认功能使用该接
14、口的方法;?包装采取的形式就是包装采取的形式就是MFC和和Windows Forms。15Ch3 Windows编程的概念编程的概念1.6 Windows 数据类型数据类型?Windows定义了许多用来在定义了许多用来在Windows API中指定函数的形参类型和返回类型的数据类型,这些类型也传播到了中指定函数的形参类型和返回类型的数据类型,这些类型也传播到了MFC定义的函数中;定义的函数中;?Windows类型的每一种都映射到某种类型的每一种都映射到某种C+类型,但这种映射在不同版本的类型,但这种映射在不同版本的Windows中可能改变;中可能改变;?应该总是使用应该总是使用Windows类
15、型,而使用类型,而使用C+类型可能遇到问题;类型可能遇到问题;?MSDN中能找到中能找到Windows数据类型的完整列表。数据类型的完整列表。BOOL Boolean variable(should be TRUE or FALSE).This type is declared in WinDef.h as follows:typedef int BOOL;BOOLEAN Boolean variable(should be TRUE or FALSE).This type is declared in WinNT.h as follows:typedef BYTE BOOLEAN;BYTE
16、Byte(8 bits).This type is declared in WinDef.h as follows:typedef unsigned char BYTE;CHAR8-bit Windows(ANSI)character.This type is declared in WinNT.h as follows:typedef char CHAR;WORD16-bit unsigned integer.This type is declared in WinDef.h as follows:typedef unsigned short WORD;DWORD32-bit unsigne
17、d integer.This type is declared in WinDef.h as follows:typedef unsigned long DWORD;INT32-bit signed integer.This type is declared in WinDef.h as follows:typedef int INT;FLOATFloating-point variable.This type is declared in WinDef.h as follows:typedef float FLOAT;部分常用部分常用Windows 数据类型数据类型LPVOIDPointer
18、 to any type.This type is declared in WinDef.h as follows:typedef void*LPVOID;HWNDHandle to a window.This type is declared in WinDef.h as follows:typedef HANDLE HWND;HANDLEHandle to an object.This type is declared in WinNT.h as follows:typedef PVOID HANDLE;HDCHandle to a device context(DC).This type
19、 is declared in WinDef.h as follows:typedef HANDLE HDC;LPARAMMessage parameter.This type is declared in WinDef.h as follows:typedef LONG_PTR LPARAM;LPCSTRPointer to a constant null-terminated string of 8-bit Windows(ANSI)characters.This type is declared in WinNT.h as follows:typedef _nullterminated
20、CONST CHAR*LPCSTR;LRESULTSigned result of message processing.This type is declared in WinDef.h as follows:typedef LONG_PTR LRESULT;INT32/INT6432/64-bit signed integer.This type is declared in BaseTsd.h as follows:typedef signed int/_int64 INT32/INT64;18Ch3 Windows编程的概念编程的概念1.6 Windows 数据类型数据类型?Windo
21、ws以及以及Windows API函数原型所使用的所有数据类型,都包含在函数原型所使用的所有数据类型,都包含在windows.h头文件内,因此在整合基本的头文件内,因此在整合基本的Windows程序时要嵌 入该头文件。程序时要嵌 入该头文件。#include“windows.h”该文件中包含了很多其他头文件,例如,该文件中包含了很多其他头文件,例如,WinDef.h、WinNT.h、WinBase.h19Ch3 Windows编程的概念编程的概念1.7 Windows程序中的变量命名规则程序中的变量命名规则?采用匈牙利标记法采用匈牙利标记法 变量名的前缀能够指出该变量容纳的数值类型以及该变量的
22、用法。变量名的前缀能够指出该变量容纳的数值类型以及该变量的用法。例如,前缀例如,前缀lpfn表示指向某个函数的表示指向某个函数的long类型指针。类型指针。前缀很多,且经常组合使用。前缀很多,且经常组合使用。?好处好处 避免对变量的不同解释而误用变量;避免对变量的不同解释而误用变量;使程序易于理解,提高可读性;使程序易于理解,提高可读性;20Ch3 Windows编程的概念编程的概念前缀前缀意义意义前缀前缀意义意义bBOOLiintbyUnsigned charllongccharlplong类型指针dwDWORDp指针fn函数s字符串h句柄wWORD1.7 Windows程序中的变量命名规则
23、程序中的变量命名规则21Ch3 Windows编程的概念编程的概念2 Windows程序的结构程序的结构?最简单的仅使用最简单的仅使用Windows API的的Windows程序仅需编写两个函数程序仅需编写两个函数:WinMainWinMain()()函数函数函数函数由由Windows调用,程序执行的入口调用,程序执行的入口点,并完成基本的程序初始化工作点,并完成基本的程序初始化工作;WndProcWndProc()()函数函数函数函数由由Windows调用,用来处理应用程调用,用来处理应用程序的消息,大多数专用代码都写在这序的消息,大多数专用代码都写在这里,以响应各种因用户输入而引发的里,以
24、响应各种因用户输入而引发的消息消息;该函数名是自定义的,通常命名为该函数名是自定义的,通常命名为WndProc或或WindowProc22Ch3 Windows编程的概念编程的概念?WinMain()函数通过调用某些函数通过调用某些Windows API函数与函数与Windows通信,通信,WndProc()函数亦如此。函数亦如此。?Windows使使WinMain()函数与函数与WndProc()函数联系起来。函数联系起来。WindowsWindows APIWindows程序程序WinMain()WndProc()程序启动消息程序启动消息2 Windows程序的结构程序的结构23Ch3 W
25、indows编程的概念编程的概念2.1 WinMain()函数函数?原型原型int WINAPI WinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow);?为了允许为了允许Windows传递数据,该函数有传递数据,该函数有4个参数和一个返回值。个参数和一个返回值。24Ch3 Windows编程的概念编程的概念2.1 WinMain()函数函数?Windows传递给该函数的参数包含着重要的数据传递给该函数的参数包含着重要的数据int WINAPI WinMain(HINSTANCEhInstanc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ch3Windows 编程 概念
![提示](https://www.deliwenku.com/images/bang_tan.gif)
限制150内