您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > Windows应用程序设计概述
第9章Windows应用程序设计概述王建兴物理学与电子信息工程系9.1.1事件驱动的程序设计传统的程序设计(如C语言)主要采用顺序的、关联的、过程驱动的程序设计方法。开始处理输入输出结束9.1.1事件驱动的程序设计事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的用户用各种合理的顺序来安排程序的流程。开始结束取事件并处理退出发送事件输入界面1输入界面3输入界面29.1.2消息循环与输入事件驱动是靠消息循环机制来实现的。Windows应用程序的消息来源:–(1)输入消息–(2)控件消息–(3)系统消息–(4)用户消息Windows操作系统包括三个内核基本元件:GDI、KERNEL、USER。9.1.3图形输出(1)而Windows的每一个应用程序对屏幕的一部分进行处理。Windows是一个多窗口的操作系统,由操作系统来统一管理屏幕输出;每个窗口要输出内容时,必须首先向操作系统发出请求(GDI请求),由操作系统完成实际的屏幕输出工作。(2)Windows程序的所有输出都是图形。Windows提供了丰富的图形函数用于图形输出。(3)Windows下的输出是设备无关的。–Windows的图形输出是由图形设备接口(GDI)来完成的,GDI是系统原始的图形输出库,它用于在屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面。9.1.3图形输出–GDI提供两种基本服务:创建图形输出和存储图像。GDI提供了大量用于图形输出的函数,这些函数接收应用程序发出来的绘图请求、处理绘图数据并根据当前使用设备调用相应的设备驱动程序产生绘图输出。这些绘图函数分为三类:一是文字输出,二是矢量图形函数,用于画线、圆等几何图形,三是光栅(位图)图形函数,用于绘制位图。–GDI识别四种类型的设备:显示屏幕、硬拷贝设备(打印机、绘图机)、位图和图元文件。9.1.3图形输出GDI的图形输出是面向窗口的,面向窗口包含两层含义:–(1)每个窗口作为一个独立的绘图接口来处理,有它自己的绘图坐标。当程序在一个窗口中绘图时,首先建立缺省的绘图坐标,原点(0,0)位于窗口用户区的左上角。每个窗口必须独立的维护自己的输出。–(2)绘图仅对于本窗口有效,图形在窗口边界会被自动裁剪,也就是说窗口中的每一个图形都不会越出边界。即使想越出边界,也是不可能的,窗口会自动的防止其他窗口传过来的任何像素。这样,你在窗口内绘图时,就不必担心会偶然覆盖其他程序的窗口,从而保证了Windows下同时运行多个任务时各个窗口的独立性。9.1.4用户界面对象Windows支持丰富的用户接口对象,包括:窗口、图标、菜单、对话框、边框、系统菜单框、菜单、标题栏、工具栏、用户编辑区、滚动条、状态栏、图标、光标、插入符、控件等等。9.1.5资源共享Windows要求应用程序必须以一种能允许它共享Windows资源的方式进行设计,它的基本模式是这样的:–(1)向Windows系统请求资源;–(2)使用该资源;–(3)释放该资源给Windows以供别的程序使用。9.1.6Windows应用程序组成(1)C、CPP源程序文件(2)H、HPP头文件(3)资源文件:应用程序流程9.2Windows应用程序设计的基础9.2.1标识符命名–匈牙利命名法:•1、标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据类型。•2、在标识符内,前缀以后就是一个或者多个第一个字母大写的单词,这些单词清楚地指出了源代码内那个对象的用途。9.2.2句柄和Windows消息1、句柄–所谓句柄,就是一个唯一的数,用以标识许多不同的对象类型,如窗口、菜单、内存、画笔、画刷、电话线路等。–句柄的声明:•typedefvoid*HANDLE9.2.2句柄和Windows消息常用句柄类型及其说明句柄类型说明HWND标识窗口句柄HINSTANCE标识当前实例句柄HCURSOR标识光标句柄HFONT标识字体句柄HPEN标识画笔句柄HBRUSH标识画刷句柄HDC标识设备环境句柄HBITMAP标识位图句柄HICON标识图标句柄HMENU标识菜单句柄HFILE标识文件句柄9.2.2句柄和Windows消息2、消息–Windows中消息由三部分组成:消息号、字参数和长字参数(有时也简称为长参数)。–结构体MSG的定义如下:typedefstructtagMSG{HWNDhwnd;UINTmessage;WPARAMwParamt;LPARAMlParam;DWORDtime;POINTpt;}MSG;9.2.2句柄和Windows消息2、消息–不同Windows消息类型的取值范围消息类型取值范围Windows消息0x0000~0x03FF用户定义内部消息(WM_USER=0x0400)0x0400-0x07FFWindows保留值0x8000~0xBFFF供应用使用的字符串消息0xC000-0xFFFF9.2.3Windows应用程序的基本结构Windows的应用程序具有相对固定的基本结构,其中由入口函数WinMain、窗口函数WndProc(有时也称窗口处理函数)构成基本框架,并包含各种数据类型、数据结构与函数等。入口函数WinMain和窗口函数是Windows应用程序的主体。–【示例9-1】9.2.3Windows应用程序的基本结构1、WinMain函数WinMain函数实现以下功能:–注册窗口类,建立窗口及执行其他必要的初始化工作。–进入消息循环,根据从应用程序消息队列接受的消息,调用相应的处理过程。–当消息循环检索到WM_QUIT消息时终止程序运行。9.2.3Windows应用程序的基本结构1、WinMain函数WinMain函数有三个基本的组成部分:函数说明、初始化和消息循环。(1)函数说明WINAPIWinMain(HINSTANCEhInstance,//应用程序当前实例句柄HINSTANCEhPrevInstance,//应用程序其他实例句柄LPSTRlpCmdLine,//指向程序命令行参数的指针intnCmdShow//应用程序开始执行时窗口显示方式的整数值标识)9.2.3Windows应用程序的基本结构(2)初始化:初始化包括窗口类的定义、注册、创建窗口实例和显示窗口4部分。①窗口类定义窗口类定义通过给窗口类数据结构WNDCLASS赋值完成,该数据结构中包含窗口类的各种属性。窗口类定义常用到以下函数:·LoadIcon函数·LoadCursor函数·GetStockObject函数9.2.3Windows应用程序的基本结构(2)初始化②注册窗口类RegisterClass(&wndclass);//wndclass为窗口类结构③创建窗口创建一个窗口类的实例由函数CreateWindow()实现④显示窗口窗口类的显示由ShowWindow和UpdateWindow函数实现。BOOLShowWindow(HWNDhwnd,intnCmdShow)UpdateWindow(HWNDhwnd);9.2.3Windows应用程序的基本结构(3)消息循环消息循环的常见格式如下:MSGMsg;while(GetMessage(&Msg,NULL,0,0)){TranslateMessage(&Msg);DispatchMessage(&Msg);}9.2.3Windows应用程序的基本结构(3)消息循环TranslateMessage函数负责将消息的虚拟键转换为字符信息,其形式为:TranslateMessage(&MSG)DispatchMessage函数将参数MSG指向的消息传送到指定窗口函数,其形式为:DispatchMessage(&MSG)当GetMessage函数返回零值,即检索到WM_QUIT消息时,程序将结束循环并退出。9.2.3Windows应用程序的基本结构2、窗口函数–窗口函数定义了应用程序对接收到的不同梢息的响应–通常,窗口函数由一个或多个switch语句组成。每一条case语句对应一种消息,当应用程序接收到一个清息时,相应的case语句被激活并执行相应的响应程序模块。9.2.3Windows应用程序的基本结构switch(message)//message为标识消息的消息步{case……break;…caseWM_DESTORY:PostQuitMessage(0);default:returnDefWindowProc(hwnd,message,wParam,lParam);}9.2.3Windows应用程序的基本结构3、数据类型4、数据结构–(1)MSG–(2)WNDCLASS–(3)POINT–(4)RECT【示例9-2】
本文标题:Windows应用程序设计概述
链接地址:https://www.777doc.com/doc-3517611 .html