第6章 Windows编程基础.ppt
《第6章 Windows编程基础.ppt》由会员分享,可在线阅读,更多相关《第6章 Windows编程基础.ppt(76页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6章章 Windows编程基础编程基础 第第6章章 Windows编程基础编程基础 6.1 Windows程序的特点程序的特点6.2 基本概念基本概念 6.3 Win32程序的基本结构程序的基本结构6.4 利用利用API开发开发Win32程序实例程序实例6.5 使用使用AppWizard生成生成Win32程序程序习习 题题 第第6章章 Windows编程基础编程基础 6.1 Windows程序的特点程序的特点 Windows程序的主要特点。1用户界面统一、友好2独立于设备的图形操作3支持多任务4队列化消息输入5支持队列特征的消息驱动模型6事件驱动的程序设计第第6章章 Windows编程基础
2、编程基础 7资源共享系统资源与用户自定义资源的区别是:(1)用户自定义资源是窗口可视元素的映像。(2)用户自定义资源的标志号可由一个自定义的整数或者名字来表示,一般在同类资源中,如对话框,该整数在程序范围内是惟一的。第第6章章 Windows编程基础编程基础 8程序和资源分开程序和资源分开引入资源有以下一些好处:(1)可降低内存需求。(2)便于统一管理和重复利用。(3)应用程序与界面有一定的独立性。9支持应用程序间的数据交换支持应用程序间的数据交换 第第6章章 Windows编程基础编程基础 6.2 基本概念基本概念 6.2.1 事件及事件驱动事件及事件驱动事件通常以以下三种方式产生:l通过输
3、入设备,如键盘和鼠标;l通过屏幕上可视的对象,如菜单、工具栏按钮、滚动条和对话框上的控件;l来自Windows内部,如当一个后面的窗口显示到前面来时。基于事件驱动的程序模型如图6-1所示。第第6章章 Windows编程基础编程基础 图6-1基于事件驱动的程序模型第第6章章 Windows编程基础编程基础 6.2.2 消息消息1消息来源消息来源Windows应用程序的消息来源有以下四种:应用程序的消息来源有以下四种:(1)输入消息:(2)控制消息:(3)系统消息:(4)用户消息:第第6章章 Windows编程基础编程基础 VC+中存在几种系统定义的消息分类,不同的前缀符号经常用于识别不同的消息类
4、,系统定义的消息宏前缀如下:lBM:按钮控制消息;lCB:组合框控制消息;lDM:默认下压式按钮控制消息;lEM:编辑控制消息;lLB:列表框控制消息;lSBM:滚动条控制消息;lWM:窗口控制消息。第第6章章 Windows编程基础编程基础 2消息的数据结构消息的数据结构消息的数据结构MSG的定义如下:typedefstructtagMSGHWNDhwnd;/用以检索消息的窗口句柄,如为NULL,/则可以检索所有驻留在消息队列中的消息UINTmessage;/消息值第第6章章 Windows编程基础编程基础 WPARAMwParam;/包含有关消息的附加信息LPARAMlParam;/随不同
5、的消息而有所不同DWORDtime;/消息送到队列的时间POINTpt;/消息发送时,屏幕光标的位置MSG;第第6章章 Windows编程基础编程基础 其中:typedefstructtagPOINTLONGx,y;POINT;3消息队列消息队列支持队列特征的消息驱动模型如图6-2所示。第第6章章 Windows编程基础编程基础 图6-2支持队列特征的消息驱动模型第第6章章 Windows编程基础编程基础 4常用消息常用消息Windows程序常用的消息有:WM_LBUTTONDOWN:单击鼠标左键时产生的消息;WM_LBUTTONUP:放开鼠标左键时产生的消息;WM_RBUTTONDOWN:单
6、击鼠标右键时产生的消息;WM_RBUTTONUP:放开鼠标右键时产生的消息;WM_LBUTTONDBLCLK:双击鼠标左键时产生的消息;WM_RBUTTONDBLCLK:双击鼠标右键时产生的消息;WM_KEYDOWN:按下一个非系统键时产生的消息,附加信息参数wParam为按下键的虚拟键码,虚拟键码用以标识按下或释放的键,lParam记录按键的重复次数、扫描码等状态信息;第第6章章 Windows编程基础编程基础 WM_CHAR:按下一个非系统键时产生的消息,附加信息参数wParam为按下键的ASCII码,lParam的意思同上;WM_CREATE:CreateWindows函数产生的消息;W
7、M_CLOSE:关闭窗口时产生的消息;WM_DESTROY:消除窗口时由DestroyWindows()发出的消息;WM_QUIT:退出应用程序时由PostQuitMessage()发出的消息;WM_PAINT:Windows系统需要重绘时产生的消息。第第6章章 Windows编程基础编程基础 6.2.3 对象与句柄对象与句柄常见Windows对象的句柄如下所示:Windows对象相关句柄设备环境HDC窗口HWND菜单HMENU光标HCURSOR画笔HPEN第第6章章 Windows编程基础编程基础 画刷HBRUSH字体HFONT图标HICON位图HBITMAP调色板HPALETTE文件HFI
8、LE区域HRGN加速键表HACCEL第第6章章 Windows编程基础编程基础 6.2.4 API函数函数根据Windows API函数的功能,可以将其分为三类:(1)管理函数:实现窗口的创建、移动和修改功能。(2)图形设备函数:实现与设备无关的图形操作功能。(3)系统服务函数:实现与操作系统有关的多种功能。第第6章章 Windows编程基础编程基础 6.3 Win32程序的基本结构程序的基本结构 6.3.1 Win32源程序的组成源程序的组成1WinMain函数函数WinMain函数的功能是:(1)注册窗口类,建立窗口及执行其他必要的初始化工作。(2)进入消息循环,根据从消息队列中接收的消息
9、,调用相应的处理过程。(3)当消息循环检索到WM_QUIT消息时,终止程序执行。第第6章章 Windows编程基础编程基础 WinMain函数有三个基本的组成部分:函数说明、初始化和消息循环。函数说明WinMain函数初始化消息循环窗口类的定义注册窗口类RegisterClass()创建窗口CreateWindow()显示窗口ShowWindow()第第6章章 Windows编程基础编程基础 1)函数说明WinMain函数的声明如下:intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdSh
10、ow)2)初始化初始化包括窗口类的定义、注册窗口类、创建窗口和显 示 窗 口 四 部 分。需 要 注 意 的 是,在 显 示 窗 口ShowWindow函数后,需调用UpdateWindow函数更新并绘制用户区,并发出WM_PAINT消息。第第6章章 Windows编程基础编程基础 3)消息循环应用程序通常有一段代码称为消息循环,形式如下:While(GetMessage(&msg,NULL,0,0)/从消息队列中提取消息TranslateMessage(&msg);/将原始键盘消息转化为/字符(WM_CHAR)消息第第6章章 Windows编程基础编程基础 DispatchMessage(&
11、msg);/确定应用程序中应该得到/消息的窗口,并将消息发送给它在应用程序的消息队列中检索到WM_QUIT消息之前,这个循环会不断运行。当它收到WM_QUIT时,GetMessage返回false,循环停止,同时应用程序终止。2消息处理函数消息处理函数消息处理函数是用于处理特定消息的一些代码,一般包括一个多分支switch语句结构。第第6章章 Windows编程基础编程基础 LRESULTCALLBACKWndProc(HWNDhwnd,UINTmessage,WPARAMwParam,LPARAMlParam)switch(message)caseWM_DESTROY:PostQuitMes
12、sage(0);default:returnDefWindowProc(hwnd,message,wParam,lParam);return(0);第第6章章 Windows编程基础编程基础 图6-3是Windows程序和消息的基本流程。第第6章章 Windows编程基础编程基础 图6-3Windows程序和消息的基本流程第第6章章 Windows编程基础编程基础 6.3.2 Windows数据类型数据类型读者将看到Windows程序并不扩展标准C+数据类型的用途,诸如整型(int)或字符型(char)。相反,Windows将使用的所有类型定义在Windows.h文件和其相关的文件中。一些常用
13、的类型有句柄(HANDLE)、窗口句柄(HWND)、字符(BYTE)、短整数(WORD)、布尔型(BOOL)、字符串指针(LPSTR)以及常量字符串指针(LPCSTR)等。HANDLE是一个用作句柄的32位整数,句柄是代表某些资源的简单的数值,所有的句柄类型以H开头。第第6章章 Windows编程基础编程基础 6.4 利用利用API开发开发Win32程序实例程序实例下面介绍建立基于API的应用程序框架的步骤。(1)在File下拉菜单中选择New选项,以建立项目文件。(2)在弹出的New对话框中,选择Projects选项卡,并选择其中的Win32Application项,在ProjectName
14、编辑框中填人所要创建的项目文件名Myapi,然后单击OK按钮。(3)此时弹出如图6-4所示的界面,选择其中的Anemptyproject选项,说明是创建一个空的项目文件。第第6章章 Windows编程基础编程基础 图6-4Win32ApplicationStep1of1对话框第第6章章 Windows编程基础编程基础 (4)单击图6-4中的Finish按钮,出现如图6-5所示的界面,说明已经创建空的应用程序框架。图6-5NewProjectInformation对话框第第6章章 Windows编程基础编程基础 在图6-5中单击OK按钮,弹出如图6-6所示的界面。第第6章章 Windows编程基
15、础编程基础 图6-6空的Win32应用程序框架界面第第6章章 Windows编程基础编程基础 如图6-6所示,选择SourceFiles文件夹,单击鼠标右键,在弹出的快捷菜单中选择AddFilestoFolder选项,然后在弹出的如图6-7所示的对话框中选择所要加入的源程序文件即可。第第6章章 Windows编程基础编程基础 图6-7InsertFilesintoProject对话框第第6章章 Windows编程基础编程基础 例6-1创建一个如图6-8所示的Windows窗口。第第6章章 Windows编程基础编程基础 图6-8Windows窗口程序的运行结果第第6章章 Windows编程基础
16、编程基础 源程序代码如下:#include/窗口函数说明LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);/初始化窗口类/WinMain函数说明intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow)第第6章章 Windows编程基础编程基础 HWNDhwnd;MSGMsg;WNDCLASSwndclass;charlpszClassName=“窗口”;/窗口类名charlpszTitle=My_Windows;/窗口标题名第第6章章 W
17、indows编程基础编程基础 /窗口类的定义wndclass.style=0;/窗口类型为缺省类型wndclass.lpfnWndProc=WndProc;/窗口处理函数为WndProcwndclass.cbClsExtra=0;/窗口类无扩展wndclass.cbWndExtra=0;/窗口实例无扩展第第6章章 Windows编程基础编程基础 wndclass.hInstance=hInstance;/当前实例句柄wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);/窗口的最小化图标为缺省图标wndclass.hCursor=LoadCursor(NU
18、LL,IDC_ARROW);/窗口采用箭头光标第第6章章 Windows编程基础编程基础 wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);/窗口背景为白色wndclass.lpszMenuName=NULL;/窗口中无菜单wndclass.lpszClassName=lpszClassName/窗口类名为“窗口示例”第第6章章 Windows编程基础编程基础 /窗口类注册if(!RegisterClass(&wndclass)/如果注册失败,则发出警告声音MessageBeep(0);returnFALSE;第第6章章 Wi
19、ndows编程基础编程基础 /创建窗口hwnd=CreateWindow(lpszClassName,/窗口类名lpszTitle,/窗口实例的标题名WS_OVERLAPPEDWINDOW,/窗口的风格CW_USEDEFAULT,CW_USEDEFAULT,/窗口左上角坐标为缺省值CW_USEDEFAULT,第第6章章 Windows编程基础编程基础 CW_USEDEFAULT,/窗口的高和宽为缺省值NULL,/此窗口无父窗口NULL,/此窗口无主菜单hInstance,/创建此窗口的应用程序的当前句柄NULL);/不使用该值/显示窗口ShowWindow(hwnd,nCmdShow);第第6
20、章章 Windows编程基础编程基础 /绘制用户区UpdateWindow(hwnd);/消息循环while(GetMessage(&Msg,NULL,0,0)TranslateMessage(&Msg);/将消息的虚拟键转换为字符信息DispatchMessage(&Msg);/将消息传送到指定窗口returnMsg.wParam;/消息循环结束即程序终止时将信息返回系统第第6章章 Windows编程基础编程基础 /窗口函数LRESULTCALLBACKWndProc(HWNDhwnd,UINT message,WPARAM wParam,LPARAM lParam)switch(messa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 Windows编程基础 Windows 编程 基础
限制150内