《Windows应用程序设计概述.ppt》由会员分享,可在线阅读,更多相关《Windows应用程序设计概述.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Windows应用程序设应用程序设计概述计概述9.1.1事件驱动的程序设计 传统的程序设计(如C语言)主要采用顺序的、关联的、过程驱动的程序设计方法。 开 始处 理输 入输 出结 束9.1.1事件驱动的程序设计 事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的用户用各种合理的顺序来安排程序的流程。 开始结束取事件并处理退出发送事件输入界面1输入界面3输入界面29.1.2 消息循环与输入消息循环与输入事件驱动是靠消息循环机制来实现的。 Windows应用程序的消息来源 :(1)输入消
2、息 (2)控件消息 (3)系统消息 (4)用户消息 Windows操作系统包括三个内核基本元件:GDI、KERNEL、USER 。9.1.3 图形输出 (1)而Windows的每一个应用程序对屏幕的一部分进行处理。Windows是一个多窗口的操作系统,由操作系统来统一管理屏幕输出;每个窗口要输出内容时,必须首先向操作系统发出请求(GDI请求),由操作系统完成实际的屏幕输出工作。(2)Windows程序的所有输出都是图形。Windows提供了丰富的图形函数用于图形输出。 (3)Windows下的输出是设备无关的。 Windows的图形输出是由图形设备接口(GDI)来完成的,GDI是系统原始的图形
3、输出库,它用于在屏幕上输出像素、在打印机上输出硬拷贝以及绘制Windows用户界面。 9.1.3 图形输出 GDI提供两种基本服务:创建图形输出和存储图像。GDI提供了大量用于图形输出的函数,这些函数接收应用程序发出来的绘图请求、处理绘图数据并根据当前使用设备调用相应的设备驱动程序产生绘图输出。这些绘图函数分为三类:一是文字输出,二是矢量图形函数,用于画线、圆等几何图形,三是光栅(位图)图形函数,用于绘制位图。GDI识别四种类型的设备:显示屏幕、硬拷贝设备(打印机、绘图机)、位图和图元文件。 9.1.3 图形输出GDI的图形输出是面向窗口的,面向窗口包含两层含义:(1)每个窗口作为一个独立的绘
4、图接口来处理,有它自己的绘图坐标。当程序在一个窗口中绘图时,首先建立缺省的绘图坐标,原点(0,0)位于窗口用户区的左上角。每个窗口必须独立的维护自己的输出。(2)绘图仅对于本窗口有效,图形在窗口边界会被自动裁剪,也就是说窗口中的每一个图形都不会越出边界。即使想越出边界,也是不可能的,窗口会自动的防止其他窗口传过来的任何像素。这样,你在窗口内绘图时,就不必担心会偶然覆盖其他程序的窗口,从而保证了Windows下同时运行多个任务时各个窗口的独立性。9.1.4 用户界面对象 Windows支持丰富的用户接口对象,包括:窗口、图标、菜单、对话框、边框、系统菜单框、菜单、标题栏、工具栏、用户编辑区、滚动
5、条、状态栏、图标、光标、插入符、控件等等。 9.1.5 资源共享 Windows要求应用程序必须以一种能允许它共享Windows资源的方式进行设计,它的基本模式是这样的:(1)向Windows系统请求资源;(2)使用该资源;(3)释放该资源给Windows以供别的程序使用。9.1.6 Windows应用程序组成 (1)C、CPP源程序文件 (2)H、HPP头文件 (3)资源文件 :应用程序流程9.2 Windows应用程序设计的基础 9.2.1 标识符命名 匈牙利命名法 : 1、标识符的名字以一个或者多个小写字母开头,用这些字母来指定数据类型。 2、在标识符内,前缀以后就是一个或者多个第一个字
6、母大写的单词,这些单词清楚地指出了源代码内那个对象的用途。 9.2.2 句柄和Windows消息 1、句柄 所谓句柄,就是一个唯一的数,用以标识许多不同的对象类型,如窗口、菜单、内存、画笔、画刷、电话线路等。 句柄的声明: typedef void *HANDLE 9.2.2 句柄和Windows消息 常用句柄类型及其说明 句柄类型句柄类型 说明说明 HWND 标识窗口句柄HINSTANCE 标识当前实例句柄HCURSOR 标识光标句柄HFONT 标识字体句柄HPEN 标识画笔句柄HBRUSH 标识画刷句柄 HDC 标识设备环境句柄HBITMAP 标识位图句柄HICON 标识图标句柄HMENU
7、 标识菜单句柄HFILE 标识文件句柄9.2.2 句柄和Windows消息2、消息 Windows中消息由三部分组成:消息号、字参数和长字参数(有时也简称为长参数)。 结构体MSG的定义如下:typedef struct tagMSGHWND hwnd;UINT message;WPARAM wParamt;LPARAM lParam;DWORD time;POINT pt;MSG;9.2.2 句柄和Windows消息2、消息 不同Windows消息类型的取值范围 消息类型消息类型 取值范围取值范围Windows消息 0 x00000 x03FF用户定义内部消息(WM_USER=0 x0400
8、) 0 x0400-0 x07FFWindows保留值 0 x80000 xBFFF供应用使用的字符串消息 0 xC000-0 xFFFF9.2.3 Windows应用程序的基本结构 WindowsWindows的应用程序具有相对固定的基本结构,的应用程序具有相对固定的基本结构,其中由入口函数其中由入口函数WinMainWinMain、窗口函数、窗口函数WndProcWndProc(有时也称窗口处理函数)构成基本框架,并(有时也称窗口处理函数)构成基本框架,并包含各种数据类型、数据结构与函数等。入口包含各种数据类型、数据结构与函数等。入口函数函数WinMainWinMain和窗口函数是和窗口函
9、数是WindowsWindows应用程序的应用程序的主体。主体。【示例【示例9-19-1】 9.2.3 Windows应用程序的基本结构 1、WinMain函数 WinMain函数实现以下功能: 注册窗口类,建立窗口及执行其他必要的初始化工作。 进入消息循环,根据从应用程序消息队列接受的消息,调用相应的处理过程。 当消息循环检索到WM_QUIT消息时终止程序运行。9.2.3 Windows应用程序的基本结构 1、WinMain函数 WinMain函数有三个基本的组成部分:函数说明、初始化和消息循环。 (1)函数说明WINAPI WinMain( HINSTANCE hInstance, /应用
10、程序当前实例句柄HINSTANCE hPrevInstance,/应用程序其他实例句柄LPSTR lpCmdLine, /指向程序命令行参数的指针int nCmdShow /应用程序开始执行时窗口显示方式的整数值标识)9.2.3 Windows应用程序的基本结构(2)初始化 :初始化包括窗口类的定义、注册、创建窗口实例和显示窗口4部分。窗口类定义 窗口类定义通过给窗口类数据结构WNDCLASS赋值完成,该数据结构中包含窗口类的各种属性。 窗口类定义常用到以下函数:LoadIcon函数LoadCursor函数GetStockObject函数9.2.3 Windows应用程序的基本结构(2)初始化
11、 注册窗口类RegisterClass(&wndclass); /wndclass为窗口类结构 创建窗口 创建一个窗口类的实例由函数CreateWindow()实现 显示窗口 窗口类的显示由ShowWindow和UpdateWindow函数实现。 BOOL ShowWindow(HWND hwnd,int nCmdShow) UpdateWindow(HWND hwnd); 9.2.3 Windows应用程序的基本结构(3)消息循环消息循环的常见格式如下:MSG Msg;while (GetMessage(&Msg, NULL,0,0)TranslateMessage(&Msg);Dispat
12、chMessage(&Msg);9.2.3 Windows应用程序的基本结构(3)消息循环TranslateMessage函数负责将消息的虚拟键转换为字符信息,其形式为: TranslateMessage(&MSG)DispatchMessage函数将参数MSG指向的消息传送到指定窗口函数,其形式为: DispatchMessage(&MSG)当GetMessage函数返回零值,即检索到WM_QUIT消息时,程序将结束循环并退出。9.2.3 Windows应用程序的基本结构2、窗口函数 窗口函数定义了应用程序对接收到的不同梢息的响应 通常,窗口函数由一个或多个switch语句组成。每一条case语句对应一种消息,当应用程序接收到一个清息时,相应的case语句被激活并执行相应的响应程序模块。9.2.3 Windows应用程序的基本结构switch (message) /message为标识消息的消息步case break;case WM_DESTORY:PostQuitMessage(0);default:return DefWindowProc(hwnd,message, wParam, lParam); 9.2.3 Windows应用程序的基本结构3、数据类型 4、数据结构 (1)MSG (2) WNDCLASS (3)POINT(4)RECT 【示例示例9-29-2】