版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Windows编程
基础知识主要内容Windows编程特点、特性动态链接库和静态链接库Windows的基本数据类型窗口和句柄过程驱动和消息驱动简单Windows应用程序演示2创建Win32项目3编译运行,生成窗口4在这个窗口上,我们可以用鼠标、键盘跟应用程序交互。例如,用鼠标、键盘操作菜单;用鼠标拖动窗口等等。经过后面的学习,我们就可以添加更多的功能到应用程序,例如用键盘、鼠标控制精灵在窗口中移动,碰到怪物后展开战斗等等。5Windows编程特点、特性动态链接库和静态链接库Windows的基本数据类型窗口和句柄过程驱动和消息驱动6图形用户接口(GUI
GraphicalUserInterface) Windows为应用程序提供了窗口、菜单等等,这些图形提供了使用屏幕的最佳方式。多任务环境
为便于多个程序的使用,以及这些程序间信息的交换,Windows支持多任务。在同一时刻能有多个Windows程序显示并运行。动态链接库 Windows上执行的程序可共享动态链接库中的内容。Windows运行机制的核心就是“动态链接”。7
一个完整的Windows应用程序除了WinMain函数外,包含用于处理用户动作和窗口消息的窗口函数。
一个Windows应用程序还常常具有一些特性:
消息驱动机制
图形设备接口(GDIGraphicsDeviceInterface)
基于资源的程序设计
动态链接库81.消息驱动机制
Windows程序和控制台应用程序之间一个最根本区别,在于控制台应用程序是通过调用系统函数来获得用户输入,而Windows程序则是通过系统发送的消息来处理用户输入。 Windows操作环境中,无论是系统产生的动作或用户运行应用程序产生的动作,称为事件(Events)产生的消息(Message)。9
2.图形设备接口(GDI)
Windows则提供了一个抽象的接口,称为图形设备接口,使得程序员直接利用系统的GDI函数就能方便实现图形和文本的输出。基于资源的程序设计
Windows应用程序包含众多图形元素,如光标、菜单、工具栏、位图、对话框等。104.动态链接库在Windows操作系统中,最主要的DLL有KERNEL32.DLL、GDI32.DLL和USER32.DLL。KERNEL32.DLL用来处理存储器低层功能、任务和资源管理等Windows核心服务;GDI32.DLL提供图形设备接口,管理用户界面和图形绘制,包括Windows元文件、位图、设备描述表和字体等;USER32.DLL负责窗口的管理,包括消息、菜单、光标、计时器及其它与控制窗口显示相关的功能。11Windows编程特点、特性动态链接库和静态链接库Windows的基本数据类型窗口和句柄过程驱动和消息驱动12静态链接库技术DOS环境下的C语言是依赖其运算函数库运行的。如程序中用到了库函数printf,链接程序将从运算函数库中拷入printf函数到程序内存中来,形成可执行文件。这种方法叫静态链接。程序员还可以建立自己的函数库,在其中实现常用的功能或标准库里没有的函数。这很大程度上解放了程序员,使其不必反复编码重复工作。消除了重复编码的现象。静态链接库也带来了问题。多个程序在Windows环境下共享内存,每个程序都保存一个公用函数副本,这显然导致了内存的浪费。13动态链接库技术动态链接库(DLL)技术是Windows的重要技术。链接程序并不把库函数拷入程序的可执行文件,而是由程序的可执行文件在执行过程中调用库函数。这种方法节约了内存,无论多少并行程序,要用到某个函数时,该函数在内存中只有一个拷贝。此外,当函数被修改后,不必重新链接调用该函数的可执行文件。这样就解决了静态链接库使用中浪费内存的问题,修改后也不需要重新链接,使用方便有效。14动态链接库技术DLL的实质是一个可执行模块,它可以包括Windows应用程序所有的函数,以及资源和其他代码。但DLL本身不会自己运行,它将驻留内存而其他应用程序来调用它。在VC++中我们可以编写自己的动态链接库。我们在Windows目录下的system文件夹中会看到大量的链接库(*.DLL)。15Windows编程特点、特性动态链接库和静态链接库Windows的基本数据类型窗口和句柄过程驱动和消息驱动进程和线程16Windows常用的基本数据类型Windows数据类型所对应的基本数据类型说明BOOLbool布尔值BYTEunsignedchar8位无符号整数COLORREFunsignedlong用作颜色值的32位值DWORDunsignedlong32位无符号整数,段地址和相关的偏移地址LONGlong32位带符号整数LPARAMlong作为参数传递给窗口过程或回调函数的32位值LPCSTRconstchar*指向字符串常量的32位指针LPSTRchar*指向字符串的32位指针LPVOIDvoid*指向未定义类型的32位指针LRESULTlong来自窗口过程或回调函数的32位返回值UINTunsignedint32位无符号整数WORDunsignedshort16位无符号整数WPARAMunsignedint当作参数传递给窗口过程或回调函数的32位值17HINSTANCE和LPSTR等,这样的数据类型只是一些基本数据类型的别名。需要说明的是:这些基本数据类型都是用大写字符来表示,以与一般C++基本数据类型相区别。凡是数据类型的前缀是P或LP,则表示该类型是一个指针或长指针数据类型。若前缀是U,则表示无符号数据类型,等等。
Windows还提供一些宏来处理上述基本数据类型。例如,LOBYTE和HIBYTE分别用来获取16位数值中的低位和高位字节;LOWORD和HIWORD分别用来获取32位数值中的低位字和高位字;MAKEWORD是将两个16位无符号值结合成一个32位无符号值,等等。18Windows编程特点、特性动态链接库和静态链接库Windows的基本数据类型窗口和句柄过程驱动和消息驱动进程和线程19窗口Windows应用程序基本的操作单元;应用程序与用户之间交互的接口;是系统管理应用程序的基本单位。Windows应用程序首先创建一个或多个窗口;程序运行过程就是某个窗口内部、多个窗口之间、窗口与系统之间的交互过程。20句柄句柄(HANDLE)是一个4字节长的、无符号的惟一整数值(long型),用于标识应用程序中的各种对象、资源。例如窗口、光标、应用程序实例等等。系统就是通过句柄来找到相应的对象、资源,从而来进行管理和操作的。按资源的类型,又可将句柄细分成图标句柄(HICON),光标句柄(HCURSOR),窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等等各种类型的句柄。例如,操作系统给每一个窗口指定了一个唯一的标识号即窗口句柄。21Windows编程特点、特性动态链接库和静态链接库Windows的基本数据类型窗口和句柄过程驱动和消息驱动进程和线程22过程驱动DOS下开发程序主要使用顺序的、过程驱动的程序设计方法。其特点是程序有明显的开始、明显的执行过程、明显的的结束。执行过程中,程序直接控制事件或过程的顺序。这样的程序设计方法是面向过程而不是面向用户的,交互性差,用户界面不够友好,它强迫用户按照某种不可更改的模式进行工作。…程序模块一程序模块N…开始结束23事件驱动Windows程序是事件驱动的,由事件的发生来控制程序走向。是一种“被动”式程序设计方法,程序开始运行时,处于等待用户输入事件状态,然后取得事件并作出相应反应,处理完毕又返回并处于等待事件状态。处理程序一处理程序二开始结束处理程序三事件一事件二事件三退出事件……24事件驱动和消息循环事件驱动程序设计是围绕消息的产生、处理而展开的,消息是关于发生的事件的信息。例如:一个键或鼠标被按下,产生了一个消息;当松开时,又产生了另一个消息。Windows应用程序所做的主要工作就是对这些消息进行处理。消息可由应用程序本身产生,也可以由运行的其他程序产生,还可以由用户或Windows产生。每当事件发生时,Windows根据传来的消息做出记录并将相应的消息分配到有关的应用程序。25事件驱动和消息循环Windows为应用程序消息提供了称为消息队列(MessageQueue)的保留区。操作系统中的每个正在执行的程序(应用程序、系统)都有自己的消息队列。由操作系统、其他应用程序或用户向应用程序发送的消息都存储在队列中,各消息在队中等待被调用。Windows应用程序以特定的循环调用Windows消息,即消息循环(MessageLoop)。消息循环是一个简单的While()循环,它一直运行,直到接收到终止执行的消息才会关闭应用程序,停止循环。26Windows应用程序的基本流程27WindowsAPI和MFCApplicationProgrammingInterface应用程序接口。学习WindowsAPI将使您更深入地了解Windows工作的方式。
使用C++语言和WINOWSAPI不是编写Windows程序的唯一方法。然而,这种方法却提供给您最佳的性能、最强大的功能和在发掘Windows特性方面最大的灵活性。MicrosoftFoundationClassLibrary(MFC)在一组C++类别中封装了许多Windows程序设计中的琐碎细节。28简单的Windows应用程序【例HelloWord】:一个最简单的Windows应用程序(1)运行MicrosoftVisual2008后,选择“文件”“新建”菜单命令,打开应用程序向导,显示出“新建项目”对话框。29(2)在工程名称框中键入Win32应用程序项目名称HelloMsg,单击[确定]按钮继续。(3)在“下一步”向导中勾选“空项目”,完成。30(5)在文档编辑窗口中输入下面的代码:#include<windows.h>intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnCmdShow){MessageBox(NULL,TEXT("你好,我的VisualC++世界!"),TEXT("问候"),0);return0;
}31编译并运行程序从上面的程序可以看出,WinMain函数的原型如下:intWINAPIWinMain(HINSTANCEhInstance, //当前实例句柄HINSTANCEhPrevInstance,
//
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 劳动仲裁调解协议书7篇
- 商业合伙人的协议书
- 传统民间工艺品-捏面人简介
- (参考模板)三通项目立项报告
- 第三次月考试卷-A4
- 重庆2020-2024年中考英语5年真题回-教师版-专题08 阅读理解之记叙文
- 电能表安06课件讲解
- 2023年抗甲状腺药项目融资计划书
- 国华电力危险化学品安全管理培训课件
- PLC控制技术试题库(附参考答案)
- 李商隐诗歌《锦瑟》课件
- 世界文化遗产-乐山大佛课件
- 2022小学一年级数学活用从不同角度解决问题测试卷(一)含答案
- 博尔赫斯简介课件
- 2021年山东交投矿业有限公司招聘笔试试题及答案解析
- 施工单位资料检查内容
- 大气课设-酸洗废气净化系统
- 学校校庆等大型活动安全应急预案
- 检测公司检验检测工作控制程序
- 高血压病例优秀PPT课件
- 精密电主轴PPT课件
评论
0/150
提交评论