第06章 Windows编程基础.ppt
《第06章 Windows编程基础.ppt》由会员分享,可在线阅读,更多相关《第06章 Windows编程基础.ppt(60页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章Windows编程基础编程基础第第6章章Windows编程基础编程基础第第6章章Windows编程基础编程基础第第6章章Windows编程基础编程基础6.1 Windows程序的特点程序的特点6.2 基本概念基本概念6.3 Win32程序的基本结构程序的基本结构6.4 利用利用API开发开发Win32程序实例程序实例6.5 使用使用AppWizard生成生成Win32程序程序第第6章章Windows编程基础编程基础6.1Windows程序的特点程序的特点Windows程序的主要特点程序的主要特点:1用户界面统一、友好用户界面统一、友好2独立于设备的图形操作独立于设备的图形操作使用图形
2、设备接口(使用图形设备接口(GDI)屏蔽了不同设备的差异,提屏蔽了不同设备的差异,提供了设备无关的图形输出能力供了设备无关的图形输出能力3支持多任务支持多任务允许用户同时运行多个应用程序(窗口)允许用户同时运行多个应用程序(窗口)4队列化消息输入队列化消息输入把从键盘、鼠标、定时器等输入设备接收的输入信息把从键盘、鼠标、定时器等输入设备接收的输入信息放入应用程序的队列中;放入应用程序的队列中;Windows操作系统管理队列;操作系统管理队列;应用程序需要输入信息时,不读硬件端口,只读消息应用程序需要输入信息时,不读硬件端口,只读消息队列。队列。5支持队列特征的消息驱动模型支持队列特征的消息驱动
3、模型第第6章章Windows编程基础编程基础6事件驱动的程序设计事件驱动的程序设计Windows程程序序由由事事件件的的发发展展控控制制,允允许许程程序序的的用用户户用用各各种种合理的顺序来安排程序的流程。合理的顺序来安排程序的流程。7资源共享资源共享各个应用程序共享系统提供的资源,包括设备上下文、画各个应用程序共享系统提供的资源,包括设备上下文、画刷、画笔、字体、对话框、图标、定时器、通信端口等刷、画笔、字体、对话框、图标、定时器、通信端口等8程序和资源分开程序和资源分开菜菜单单、对对话话框框、位位图图等等可可视视对对象象被被单单独独分分离离出出来来加加以以定定义义,全部资源定义都放在资源文
4、件中(通常以全部资源定义都放在资源文件中(通常以.rc为后缀名)。为后缀名)。9支持应用程序间的数据交换支持应用程序间的数据交换Windows程序的特点程序的特点第第6章章Windows编程基础编程基础6.2基本概念基本概念第第6章章Windows编程基础编程基础6.2.1事件及事件驱动事件及事件驱动Windows系统也叫事件驱动的系统。当用户按下一个键、系统也叫事件驱动的系统。当用户按下一个键、移动鼠标或单击鼠标按钮时,计算机通知移动鼠标或单击鼠标按钮时,计算机通知Windows系统已系统已经发生了一个事件,以及事件的种类、发生的时间、发生经发生了一个事件,以及事件的种类、发生的时间、发生的
5、位置的位置(如坐标值如坐标值)。事件通常以下列三种方式产生:事件通常以下列三种方式产生:通过输入设备,如键盘和鼠标;通过输入设备,如键盘和鼠标;通过屏幕上可视的对象,如菜单、工具栏按钮、滚动条通过屏幕上可视的对象,如菜单、工具栏按钮、滚动条和对话框上的控件;和对话框上的控件;来自来自Windows内部,如当一个后面的窗口显示到前面时。内部,如当一个后面的窗口显示到前面时。第第6章章Windows编程基础编程基础基于事件驱动的程序模型基于事件驱动的程序模型第第6章章Windows编程基础编程基础6.2.2消息消息当当Windows捕获一条事件后,它会编写一条消息,将相关捕获一条事件后,它会编写一
6、条消息,将相关信息放入一个数据结构信息放入一个数据结构MSG中,然后将包含此数据结构的中,然后将包含此数据结构的消息发给需要消息的程序。消息发给需要消息的程序。消息处理是消息处理是Windows应用程序的核心。应用程序的核心。消息是操作系统通知应用程序某件事情已经发生的一种方消息是操作系统通知应用程序某件事情已经发生的一种方式。式。Windows消息是在消息是在Windows.h文件中用宏定义的常数。文件中用宏定义的常数。消息常数名常以消息常数名常以WM_开头,格式为开头,格式为WM_XX。第第6章章Windows编程基础编程基础消息消息1消息来源消息来源Windows应用程序的消息来源于以下
7、四种:应用程序的消息来源于以下四种:(1)输入消息:键盘和鼠标的输入。此类消息先放在系统消输入消息:键盘和鼠标的输入。此类消息先放在系统消息队列中,然后由息队列中,然后由Windows将将它们送入应用程序消息队列它们送入应用程序消息队列中,由应用程序来处理消息。中,由应用程序来处理消息。(2)控制消息:与控制消息:与Windows的的控制对象,如列表框、按钮、控制对象,如列表框、按钮、复选框等进行双向通信。这类消息一般不经过应用程序消复选框等进行双向通信。这类消息一般不经过应用程序消息队列,而是直接发送到控制对象。息队列,而是直接发送到控制对象。(3)系统消息:对程序化的事件或系统时钟中断作出
8、反应。系统消息:对程序化的事件或系统时钟中断作出反应。(4)用户消息:程序员自己定义并在应用程序中主动发生的,用户消息:程序员自己定义并在应用程序中主动发生的,一般由应用程序的某一部分内部处理。一般由应用程序的某一部分内部处理。第第6章章Windows编程基础编程基础VC+中中存存在在几几种种系系统统定定义义的的消消息息分分类类,不不同同的的前前缀缀符符号号经经常常用用于于识识别别不不同同的的消消息息类类,系系统统定定义义的的消消息息宏前缀如下:宏前缀如下:l lBM:按钮控制消息;按钮控制消息;l lCB:组合框控制消息;组合框控制消息;l lDM:默认下压式按钮控制消息;默认下压式按钮控制
9、消息;l lEM:编辑控制消息;编辑控制消息;l lLB:列表框控制消息;列表框控制消息;l lSBM:滚动条控制消息;滚动条控制消息;l lWM:窗口控制消息。窗口控制消息。第第6章章Windows编程基础编程基础消息消息2消息的数据结构消息的数据结构typedefstructtagMSGHWNDhwnd;/窗口句柄,为窗口句柄,为null则可检索所有驻留在消息队列中的消则可检索所有驻留在消息队列中的消息息UINTmessage;/消息值,由消息值,由Windows.h头文件中的宏定义标识头文件中的宏定义标识WPARAMwParam;/包含有关消息的附加信息包含有关消息的附加信息,不同消息其
10、值不同不同消息其值不同LPARAMlParam;DWORDtime;/指定消息送至队列的时间指定消息送至队列的时间POINTpt;/指定消息发送时屏幕光标位置,指定消息发送时屏幕光标位置,数据类型数据类型POINT是一个结构体是一个结构体MSG;消息号:由事先定义好的消息名标识消息号:由事先定义好的消息名标识字参数字参数(wParam):用于提供消息的用于提供消息的附加信息附加信息长字参数长字参数(lParam):用于提供消息的用于提供消息的附加信息附加信息消消息息附加信息附加信息与具体与具体消息号的值有关,消息号的值有关,Windows中消息用中消息用结构体结构体MSG表示表示typedef
11、structtagPOINTLONGx;LONGy;POINT;32位无符号整型位无符号整型第第6章章Windows编程基础编程基础消息消息3消息队列消息队列支持队列特支持队列特征的消息驱征的消息驱动模型动模型当产生某消息时,该消息进入消息队列,操作系统根据消息提供当产生某消息时,该消息进入消息队列,操作系统根据消息提供的信息值决定由哪个应用程序来处理;的信息值决定由哪个应用程序来处理;应用程序按一定的方式查找应用程序中各个类的消息映射(一组应用程序按一定的方式查找应用程序中各个类的消息映射(一组宏,用来确定某个消息及相应的处理程序的对应关系);宏,用来确定某个消息及相应的处理程序的对应关系)
12、;找到处理程序后,由处理程序执行相应的操作。找到处理程序后,由处理程序执行相应的操作。消息队列消息队列窗口函数窗口函数WndProc消息队列消息队列窗口函数窗口函数WndProc用户交互内核用户交互内核USER窗口窗口1窗口窗口2第第6章章Windows编程基础编程基础消息消息4Windows程序常用消息程序常用消息(1)标准)标准Windows消息(消息(前缀为前缀为WM_)分为三类:鼠标消息、键盘消息和窗口消息分为三类:鼠标消息、键盘消息和窗口消息(2)控件消息)控件消息控件或其他子窗口向父窗口发送控件或其他子窗口向父窗口发送WM_COMMAND消息消息(3)命令消息)命令消息菜单项、工具
13、栏按钮、加速键等用户界面对象发送的菜单项、工具栏按钮、加速键等用户界面对象发送的WM_COMMAND消息。消息。焦点消息:焦点消息:WM_SETFOCUS,WM_KILLFOCUS定时器消息:定时器消息:WM_TIMER第第6章章Windows编程基础编程基础消息消息4Windows程序常用消息程序常用消息(1)标准)标准Windows消息鼠标消息消息鼠标消息WM_LBUTTONDOWN:单击鼠标左键时产生的消息;单击鼠标左键时产生的消息;WM_LBUTTONUP:放开鼠标左键时产生的消息;放开鼠标左键时产生的消息;WM_RBUTTONDOWN:单击鼠标右键时产生的消息;单击鼠标右键时产生的消
14、息;WM_RBUTTONUP:放开鼠标右键时产生的消息;放开鼠标右键时产生的消息;WM_LBUTTONDBLCLK:双击鼠标左键时产生的消息;双击鼠标左键时产生的消息;WM_RBUTTONDBLCLK:双击鼠标右键时产生的消息;双击鼠标右键时产生的消息;WM_MOUSEMOVE:鼠标在窗口中移动时产生的消息;鼠标在窗口中移动时产生的消息;第第6章章Windows编程基础编程基础消息消息4Windows程序常用消息程序常用消息(1)标准)标准Windows消息键盘消息消息键盘消息WM_KEYDOWN:按下一个非系统键时产生的消息,按下一个非系统键时产生的消息,附加信息参数附加信息参数wParam
15、为按下键的虚拟键码,虚拟键码用为按下键的虚拟键码,虚拟键码用以标识按下或释放的键,以标识按下或释放的键,lParam记录按键的重复次数、记录按键的重复次数、扫描码等状态信息;扫描码等状态信息;WM_KEYUP:弹起一个非系统键时产生的消息弹起一个非系统键时产生的消息WM_CHAR:按按下下一一个个非非系系统统键键时时产产生生的的消消息息,附附加加信信息参数息参数wParam为按下键的为按下键的ASCII码,码,lParam的意思同上;的意思同上;第第6章章Windows编程基础编程基础消息消息4Windows程序常用消息程序常用消息(1)标准)标准Windows消息窗口消息消息窗口消息WM_C
16、REATE:CreateWindows函数产生的消息;函数产生的消息;WM_CLOSE:关闭窗口时产生的消息;关闭窗口时产生的消息;WM_DESTROY:消除窗口时由消除窗口时由DestroyWindows()发出;发出;WM_QUIT:退出应用程序时由退出应用程序时由PostQuitMessage()发出;发出;WM_PAINT:Windows系统需要系统需要重绘重绘时产生的消息。时产生的消息。WM_SIZEWM_MOVE第第6章章Windows编程基础编程基础6.2.3对象与句柄对象与句柄句柄句柄是代表某些资源的一个是代表某些资源的一个4字节长的数值,用于标识应字节长的数值,用于标识应用程
17、序中不同的用程序中不同的对象对象和和同类对象中不同的实例同类对象中不同的实例所有的句柄类型以所有的句柄类型以H开头。开头。常见常见Windows对象的句柄如下所示:对象的句柄如下所示:HWND窗口句柄窗口句柄HDC设备环境句柄设备环境句柄HBITMAP位图句柄位图句柄HCURSOR光标句柄光标句柄HICON图标句柄图标句柄HFONT字体句柄字体句柄HMENU菜单句柄菜单句柄HPEN画笔句柄画笔句柄HFILE文件句柄文件句柄HBRUSH画刷句柄画刷句柄HACCEL加速键表句柄加速键表句柄HPALETTE调色板句柄调色板句柄HINSTANCE当前实例句柄当前实例句柄HRGN区域句柄区域句柄第第6章
18、章Windows编程基础编程基础6.2.4API函数函数API是应用程序编程接口:是应用程序编程接口:ApplicationProgrammingInterface。API是大量函数加上数字常量、宏、结构、类型以及其它是大量函数加上数字常量、宏、结构、类型以及其它相关项的集合。相关项的集合。大多数大多数API函数定义在函数定义在Windows.h的文件中,也可以从的文件中,也可以从Windows平台软件开发包(平台软件开发包(SDK)中得到。中得到。根据根据WindowsAPI函数的功能,可以将其分为三类:函数的功能,可以将其分为三类:(1)管理函数管理函数:实现窗口的创建、移动和修改功能。:
19、实现窗口的创建、移动和修改功能。(2)图形设备函数图形设备函数:实现与设备无关的图形操作功能。:实现与设备无关的图形操作功能。(3)系统服务函数系统服务函数:实现与操作系统有关的多种功能。:实现与操作系统有关的多种功能。第第6章章Windows编程基础编程基础6.4利用利用API开发开发Win32程序实例程序实例建立基于建立基于API的应用程序框架的步骤。的应用程序框架的步骤。(1)在在File下拉菜单中选择下拉菜单中选择New选项,以建立项目文件。选项,以建立项目文件。(2)在弹出的在弹出的New对话框中,选择对话框中,选择Projects选项卡,并选择选项卡,并选择Win32Applica
20、tion项,输入创建项目文件名项,输入创建项目文件名Myapi(3在弹出对话框中选择在弹出对话框中选择Anemptyproject选项,创建一空项选项,创建一空项目文件。目文件。第第6章章Windows编程基础编程基础(4)进入以下界面,说明已经创建空的应用程序框架。进入以下界面,说明已经创建空的应用程序框架。(5)确定后如图所示确定后如图所示空的空的Win32应用程序框架界面应用程序框架界面第第6章章Windows编程基础编程基础(6)选选择择SourceFiles文文件件夹夹,单单击击鼠鼠标标右右键键,在在弹弹出出的的快快捷捷菜菜单单中中选选择择AddFilestoFolder选选项项,然
21、然后后在在弹弹出出的的对对话话框框中中选择所要加入的源程序文件。选择所要加入的源程序文件。第第6章章Windows编程基础编程基础例例6-1创建一个如图所示的创建一个如图所示的Windows窗口。窗口。本例的目的在本例的目的在于说明创建于说明创建Windows应用程序的方法及过程应用程序的方法及过程/包含应用程序中所需的数据类型和数据结构的定义包含应用程序中所需的数据类型和数据结构的定义#include#includeLRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);/LRESULT CALLBACK WndProc(HWND,UINT,WPA
22、RAM,LPARAM);/窗口函数说明窗口函数说明/-/-以下初始化窗口类以下初始化窗口类 -int WINAPI WinMain(int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hInstance,HINSTANCE HINSTANCE hPrevInst,hPrevInst,LPSTRLPSTR lpszCmdLine,lpszCmdLine,int nCmdShowint nCmdShow)HWND HWND hwndhwnd;/;/窗口句柄窗口句柄 MSG MSG MsgMsg;/;/消息消息 WNDCLASS wndclass;/WN
23、DCLASS wndclass;/窗口类对象窗口类对象 char char lpszClassNamelpszClassName=窗口窗口;/窗口类名窗口类名 char char lpszTitlelpszTitle=My_Windows;=My_Windows;/窗口标题名窗口标题名/窗口类的定义窗口类的定义wndclass.style=0;wndclass.style=0;/窗口类型为缺省类型wndclass.lpfnWndProc=WndProc;wndclass.lpfnWndProc=WndProc;/定义窗口处理函数名为WndProcWndProcwndclass.cbClsExt
24、ra=0;wndclass.cbClsExtra=0;/窗口类无扩展wndclass.cbWndExtra=0;wndclass.cbWndExtra=0;/窗口实例无扩展wndclass.hInstance=hInstance;wndclass.hInstance=hInstance;/当前实例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);/窗口的最小化图标为缺省图标wndclass.hCursor=LoadCursor(NULL,IDC_ARROW)
25、;wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);/窗口采用箭头光标wndclass.hbrBackground=(wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSHHBRUSH)GetStockObject(WHITE_BRUSH););/窗口背景为白色wndclass.lpszMenuName=NULL;wndclass.lpszMenuName=NULL;/窗口中无菜单wndclass.lpszClassName=wndclass.lpszClassName=lpszClassName
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第06章 Windows编程基础 06 Windows 编程 基础
限制150内