第2章Windows编程基础(1).ppt
《第2章Windows编程基础(1).ppt》由会员分享,可在线阅读,更多相关《第2章Windows编程基础(1).ppt(109页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2章章Windows编程基础编程基础主要内容主要内容n基本概念基本概念nWindows程序运行机制程序运行机制nVC6.0下三种编程方式下三种编程方式n命名规则命名规则匈牙利命名法(自学)匈牙利命名法(自学)nWindows程序结构程序结构n简单的简单的Windows编程(编程(API)nMFC编程基础编程基础基本概念基本概念n窗口和程序窗口和程序n进程与线程进程与线程n句柄句柄nAPI与与SDKn事件及消息事件及消息窗口和程序窗口和程序n窗口是窗口是Windows本身以及本身以及Windows环境下的应用程序的环境下的应用程序的基本界面单位。基本界面单位。n很多人都误以为只有具有标题栏、
2、状很多人都误以为只有具有标题栏、状态栏、最大化、最小化按钮这样标准态栏、最大化、最小化按钮这样标准的方框才叫窗口。的方框才叫窗口。n其实窗口的其实窗口的概念很广概念很广,例如按钮和对,例如按钮和对话框等也是窗口,只不过是一种特殊话框等也是窗口,只不过是一种特殊的窗口。的窗口。窗口窗口n窗口窗口(Window)由由句柄句柄唯一标识。唯一标识。nWindows程序的程序的基本操作单元。基本操作单元。n系统管理应用程序的系统管理应用程序的基本单位。基本单位。n应用程序与用户交互的应用程序与用户交互的接口环境。接口环境。n应用程序的运行应用程序的运行就是窗口内部、窗口就是窗口内部、窗口之间、窗口与系统
3、之间之间、窗口与系统之间数据处理与交数据处理与交换的过程。换的过程。n一个一个Windows程序程序至少有一个窗口。至少有一个窗口。窗口的组成窗口的组成应用程序应用程序的主窗口的主窗口窗口窗口窗口窗口窗口窗口窗口窗口窗口窗口窗口的组成窗口的组成n窗口是屏幕上的窗口是屏幕上的一个矩形区域一个矩形区域n应用程序在该区域中应用程序在该区域中显示数据并等待显示数据并等待鼠标点击鼠标点击nWindows应用系统的用户界面应用系统的用户界面可以可以包含许多窗口包含许多窗口n每个窗口都有不同的特点,但都是每个窗口都有不同的特点,但都是互互相联系的相联系的三种类型的窗口三种类型的窗口n在这么多窗口中,基本类型
4、只有在这么多窗口中,基本类型只有三种:三种:n重叠重叠(Overlapped)窗口窗口n弹出弹出(Popup)窗口窗口n子子(Child)窗口窗口n在它们之间在它们之间并没有太多内在的差异并没有太多内在的差异,但,但是使用不同的窗口风格,它们的是使用不同的窗口风格,它们的外观是外观是不同的不同的三种类型的窗口三种类型的窗口n重叠窗口重叠窗口通常用于建立应用程序主窗口。通常用于建立应用程序主窗口。事实上,有时也叫做事实上,有时也叫做“主主”窗口窗口或者或者“框架框架”窗口窗口n弹出窗口弹出窗口通常以通常以对话框和消息框对话框和消息框的形式的形式与用户对话与用户对话n子窗口子窗口通常用通常用在视图
5、在视图(View)中中,如在,如在文本编辑器中的文本显示,也用文本编辑器中的文本显示,也用在控件在控件中中,如在对话框中的,如在对话框中的OK按钮按钮n而对那些看起来像按钮或控件的子窗口,也而对那些看起来像按钮或控件的子窗口,也称为称为“控件控件”窗口窗口三种窗口组成的应用程序三种窗口组成的应用程序属于桌面的重叠窗属于桌面的重叠窗口,也称主窗口口,也称主窗口主窗口的子窗口主窗口的子窗口主窗口的主窗口的子窗口子窗口主窗口的主窗口的弹出窗口弹出窗口弹出窗口弹出窗口的子窗口的子窗口三种类型的窗口三种类型的窗口n主要区别主要区别n重叠窗口和弹出窗口重叠窗口和弹出窗口n弹出窗口出现时弹出窗口出现时可以没
6、有标题可以没有标题(也称为也称为标题栏标题栏)n子窗口与重叠窗口、弹出窗口子窗口与重叠窗口、弹出窗口n子窗口子窗口只能出现在另一个窗口中只能出现在另一个窗口中,并且,并且子窗口的任何多余部分都被该窗口子窗口的任何多余部分都被该窗口移去移去或剪切掉或剪切掉n另外,子窗口是另外,子窗口是唯一不能有菜单条唯一不能有菜单条的窗口的窗口程序程序n通常说的程序都通常说的程序都是指一个能让计是指一个能让计算机识别的文件。算机识别的文件。n接触得最多的是接触得最多的是以以exe或者或者com作为扩展名的文作为扩展名的文件。件。进程与线程进程与线程n进程就是进程就是应用程序的执行实例应用程序的执行实例(或称一个
7、执(或称一个执行程序),进程是程序动态的描述。行程序),进程是程序动态的描述。n一个以一个以exe作为扩展名的文件,在没有被执作为扩展名的文件,在没有被执行的时候称之为行的时候称之为应用程序应用程序,当用鼠标双击执,当用鼠标双击执行以后,就被操作系统作为一个行以后,就被操作系统作为一个进程进程执行了。执行了。n当当关机关机或者在任务栏的图标上单击鼠标右键或者在任务栏的图标上单击鼠标右键选选“退出退出”时,时,进程便消亡进程便消亡,彻底结束了生,彻底结束了生命。命。n进程进程经历了由经历了由“创建创建”到到“消亡消亡”的的生命期生命期,而而程序自始至终存在程序自始至终存在于你的硬盘上,不管计于你
8、的硬盘上,不管计算机是否启动。算机是否启动。Windows任务管理任务管理器器进程进程线程线程n线程是进程的一个执行单元。线程是进程的一个执行单元。n同一个进程中的各个线程同一个进程中的各个线程对应于对应于一组一组CPU指令、一组指令、一组CPU寄存器以及一个堆寄存器以及一个堆栈。栈。n进程本来就进程本来就具有动态的含义具有动态的含义,是通过线,是通过线程来体现的。程来体现的。Windows应用程序,操作系统,计应用程序,操作系统,计算机硬件之间的相互关系算机硬件之间的相互关系 应用程序应用程序 操作系统操作系统 输入输出设备输入输出设备 消息队列消息队列 向下的箭头向下的箭头1表示操作系统能
9、够操纵表示操作系统能够操纵输出设备,以执行特定的功能,如让声输出设备,以执行特定的功能,如让声卡发出声音,让显卡画出图形。向上的卡发出声音,让显卡画出图形。向上的箭头箭头2表示操作系统能够感知输入设备表示操作系统能够感知输入设备状态的变化,如鼠标移动,键盘按下,状态的变化,如鼠标移动,键盘按下,并且能够知道鼠标移动的具体位置,键并且能够知道鼠标移动的具体位置,键盘按下的哪个字符。这就是操作系统和盘按下的哪个字符。这就是操作系统和计算机硬件之间的交互关系,应用程序计算机硬件之间的交互关系,应用程序开发者通常不需知道其具体实现细节。开发者通常不需知道其具体实现细节。API与与SDKnAPI是英文是
10、英文ApplicationProgrammingInterface的缩写,意思是的缩写,意思是“应用程序接口应用程序接口”,泛指系统为应用程序提供的一系列函数接口,泛指系统为应用程序提供的一系列函数接口n在编程时可以直接调用,而不必知道其内部实现的在编程时可以直接调用,而不必知道其内部实现的过程,只知道它的原型和返回值就可以了过程,只知道它的原型和返回值就可以了nSDK是英文是英文SoftwareDevelopmentKit的缩的缩写,意思是写,意思是“软件开发工具包软件开发工具包”n微软提供了许多专门的微软提供了许多专门的SDK开发包,比如开发包,比如DirectX开开发包和语音识别开发包等
11、发包和语音识别开发包等关于关于API 向下的箭头向下的箭头表示应用程序可以通知操作系表示应用程序可以通知操作系统执行某个具体的动作统执行某个具体的动作。如操作系统能够控制声卡发出声音,但它并如操作系统能够控制声卡发出声音,但它并不知道应该何时发出何种声音,需要应用程序告不知道应该何时发出何种声音,需要应用程序告诉操作系统该发出什么样的声音。诉操作系统该发出什么样的声音。关于关于API 应用程序是如何通知操作系统执行某个功能的呢?应用程序是如何通知操作系统执行某个功能的呢?在应用程序中要完成某个功能,都是以在应用程序中要完成某个功能,都是以函数调用函数调用的的形式实现的,同样,应用程序也是以形式
12、实现的,同样,应用程序也是以函数调用函数调用的方式来的方式来通知操作系统执行相应的功能的。操作系统所能够完成通知操作系统执行相应的功能的。操作系统所能够完成的每一个特殊功能通常都有一个函数与其对应,也就是的每一个特殊功能通常都有一个函数与其对应,也就是说,说,操作系统把它所能够完成的功能以函数的形式提供操作系统把它所能够完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系给应用程序使用,应用程序对这些函数的调用就叫做系统调用,这些函数的集合就是统调用,这些函数的集合就是Windows操作系统提供给操作系统提供给应用程序编程的接口应用程序编程的接口Windows API。如
13、如CreateWindow就就是一个是一个API函数函数,应用程序中调用这个函数,操作系统,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。就会按照该函数提供的参数信息产生一个相应的窗口。事件及消息事件及消息n事件(事件(Event)是对计算机操作的动作。每是对计算机操作的动作。每个事件对应一个消息,即每个事件发生的个事件对应一个消息,即每个事件发生的效果是产生消息。效果是产生消息。n消息(消息(Message)是描述事件发生的信息。是描述事件发生的信息。n比如:按键事件比如:按键事件按下键的消息、字按下键的消息、字符消息和键弹起的消息符消息和键弹起的消息n程序
14、执行的顺序取决于事件发生的顺序,程序执行的顺序取决于事件发生的顺序,但是消息的产生并不要求有次序之分。但是消息的产生并不要求有次序之分。事件驱动编程方法事件驱动编程方法n事件驱动事件驱动编程方法对于编写交互式程编程方法对于编写交互式程序很有用处,它避免了死板的操作模序很有用处,它避免了死板的操作模式。式。nWindows程序设计是针对程序设计是针对事件或消息事件或消息的处理进行。的处理进行。消息(消息(Message)向上的箭头向上的箭头表示操作系统能够将输入设备的变表示操作系统能够将输入设备的变化上传给应用程序。化上传给应用程序。如用户在某个程序活动时按了一下键盘,操作系统马如用户在某个程序
15、活动时按了一下键盘,操作系统马上能够感知到这一事件,并且能够知道用户按下的是哪上能够感知到这一事件,并且能够知道用户按下的是哪一个键,操作系统并不决定对这一事件如何作出反应,一个键,操作系统并不决定对这一事件如何作出反应,而是将这一事件转交给应用程序,由应用程序决定如何而是将这一事件转交给应用程序,由应用程序决定如何对这一事件作出反应。好比有个蚊子叮了我们一口,我对这一事件作出反应。好比有个蚊子叮了我们一口,我们的神经末梢(相当于操作系统)马上感知到这一事件,们的神经末梢(相当于操作系统)马上感知到这一事件,并传递给了我们的大脑(相当于应用程序),我们的大并传递给了我们的大脑(相当于应用程序)
16、,我们的大脑最终决定如何对这一事件作出反应,如将蚊子赶走,脑最终决定如何对这一事件作出反应,如将蚊子赶走,或是将蚊子拍死。或是将蚊子拍死。对事件作出反应的过程就是消息响应对事件作出反应的过程就是消息响应。消息(消息(Message)n消息是应用程序和计算机交互的途径消息是应用程序和计算机交互的途径,在,在计算机上几乎做每一个动作都会产生一个计算机上几乎做每一个动作都会产生一个消息。消息。n鼠标被移动会产生鼠标被移动会产生WM_MOUSEMOVE消息消息;n鼠标左键被按下会产生鼠标左键被按下会产生WM_LBUTTONDOWN的消息的消息;n鼠标右键按下便产生鼠标右键按下便产生WM_RBUTTON
17、DOWN消息等。消息等。消息的功能消息的功能n功能功能n帮助帮助Windows实现多任务。实现多任务。n通知应用程序某一事件已经发生,各应通知应用程序某一事件已经发生,各应用程序给予响应。用程序给予响应。消息的组成消息的组成 操作系统是怎样将感知到的事件传递给应用程操作系统是怎样将感知到的事件传递给应用程序呢?序呢?这是通过这是通过消息机制消息机制(Message)来实现的。来实现的。操作系统将每个事件都包装成一个称为操作系统将每个事件都包装成一个称为消息的消息的结构体结构体MSG来传递给应用程序,来传递给应用程序,参看参看MSDN。消息的组成:消息的组成:消息号字参数长字参数消息号字参数长字
18、参数n消息号事先定义好。消息号事先定义好。n字参数(字参数(wParam)长字参数)长字参数(lParam)提供附提供附加信息,含义和具体消息号相关。加信息,含义和具体消息号相关。典型的消息结构典型的消息结构typedefstructtagMSGHWNDhwnd;/接收窗口接收窗口UINTmessage;/消息标识消息标识WPARAMwParam;/附加信息附加信息LPARAMlParam;/附加信息附加信息DWORDtime;/发送时间发送时间POINTpt;/鼠标位置鼠标位置MSG,*PMSG;/vcincludewtypes.h句柄句柄(HANDLE)n句柄(句柄(HANDLE):):资
19、源的标识。资源的标识。n操作系统要管理和操作这些资源,都是通过句操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。柄来找到对应的资源。n按资源的类型,又可将句柄细分成按资源的类型,又可将句柄细分成图标句柄图标句柄(HICON),光标句柄(),光标句柄(HCURSOR),窗),窗口句柄(口句柄(HWND),应用程序实例句柄),应用程序实例句柄(HINSTANCE)等等各种类型的句柄)等等各种类型的句柄。操作。操作系统给每一个窗口指定的一个唯一的标识号即系统给每一个窗口指定的一个唯一的标识号即窗口句柄。窗口句柄。句柄句柄n句柄句柄是一个指针是一个指针n通过句柄就可以通过句柄就可以控制该句
20、柄指向的对象控制该句柄指向的对象n编写程序总是要和各种句柄打交道的编写程序总是要和各种句柄打交道的n句柄(句柄(handle)是一个)是一个4字节长的整数值字节长的整数值n是系统用于表示应用程序中不同的对象和是系统用于表示应用程序中不同的对象和同类对象中不同的实例。同类对象中不同的实例。n如一个窗口、按钮、图标、菜单等如一个窗口、按钮、图标、菜单等n这些东西在系统中被视为不同类型的对象,这些东西在系统中被视为不同类型的对象,用不同的句柄将他们区分开来。用不同的句柄将他们区分开来。常用的句柄常用的句柄句柄类型句柄类型说明说明句柄类型句柄类型说明说明HWND标识窗口句柄标识窗口句柄HDC标识设备环
21、境句柄标识设备环境句柄HINSTANCE标识当前实例句柄标识当前实例句柄HBITMAP标识位图句柄标识位图句柄HCURSOR标识光标句柄标识光标句柄HICON标识图标句柄标识图标句柄HFONT标识字体句柄标识字体句柄HMENU标识菜单句柄标识菜单句柄HPEN标识画笔句柄标识画笔句柄HFILE标识文件句柄标识文件句柄HBRUSH标识画刷句柄标识画刷句柄从变量的类型区分变量的用途从变量的类型区分变量的用途int x,y;x=30;y=30;/x和和y既可以用来表示坐标点,也可以用来表既可以用来表示坐标点,也可以用来表示宽度和高度,还可以用来表示身高和体重。示宽度和高度,还可以用来表示身高和体重。t
22、ypedef int WIDTHtypedef int HEIGHTWIDTH x;HEIGHT y;/好处:我们从变量的类型上就可以知道好处:我们从变量的类型上就可以知道x和和y是用来表示宽度和高度。是用来表示宽度和高度。消息驱动机制消息驱动机制nDOS程序是通过调用系统的函数来获得程序是通过调用系统的函数来获得用户输入。用户输入。nWindows程序则是通过操作系统发送的程序则是通过操作系统发送的消息来处理用户输入消息来处理用户输入n在在Windows操作系统环境内操作系统环境内n系统产生的动作系统产生的动作n用户运行应用程序产生的动作用户运行应用程序产生的动作事件产生事件产生的消息的消息
23、消息驱动机制消息驱动机制nWindows程序程序n接收消息接收消息n分发消息分发消息n处理消息处理消息与用户进行交互与用户进行交互消息的产生消息的产生1.用户产生消息用户产生消息2.Windows本身产生消息本身产生消息3.应用程序本身产生消息应用程序本身产生消息4.其他应用程序产生消息其他应用程序产生消息消息的分类消息的分类n窗口管理消息、初始化消息、输入消息、系统消窗口管理消息、初始化消息、输入消息、系统消息等。息等。nVC定义不同的前缀用于定义不同的前缀用于消息宏定义消息宏定义识别消息类识别消息类型。型。BM 按钮消息按钮消息CB组合框消息组合框消息DM下压按钮控制消息下压按钮控制消息E
24、M编辑框消息编辑框消息LB列表框消息列表框消息WM 窗口消息窗口消息不同消息类型的取值范围不同消息类型的取值范围消息类型消息类型取值范围取值范围系统定义消息(系统定义消息(1)0 x00000 x03ff用户定义内部消息用户定义内部消息0 x04000 x07ff系统定义消息(系统定义消息(2)0 x80000 xbfff用户定义外部消息用户定义外部消息0 xc0000 xffffWindows应用程序常用消息应用程序常用消息nWM_LBUTTONDOWNnWM_KEYDOWNnWM_CREATnWM_CLOSEnWM_DISTORYnWM_QUITnWM_PAINTnWM_CHARnWM_C
25、OMMANDWindows应用程序常用消息应用程序常用消息n窗口管理消息窗口管理消息n初始化消息初始化消息n输入消息输入消息n系统消息系统消息n剪贴板消息剪贴板消息n控制处理消息控制处理消息n控制通知消息控制通知消息n滚动条通知消息滚动条通知消息n非用户区消息非用户区消息nMDI消息消息nDDE消息消息n应用程序自定义的消息应用程序自定义的消息消息的传递消息的传递nWindows系统有一个存放消息的队列。系统有一个存放消息的队列。n每个应用程序也有一个消息队列。每个应用程序也有一个消息队列。nWindows系统先将收到的消息存放在系系统先将收到的消息存放在系统队列中。统队列中。n然后再分发到相
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 编程 基础
限制150内