轻松学VisualC之WindowsAPI程序.pptx_第1页
轻松学VisualC之WindowsAPI程序.pptx_第2页
轻松学VisualC之WindowsAPI程序.pptx_第3页
轻松学VisualC之WindowsAPI程序.pptx_第4页
轻松学VisualC之WindowsAPI程序.pptx_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章 Windows API程序,本书主要讲解在MFC架构下编写Windows程序,但是要知道MFC仅仅是微软对Windows API的封装,然后用了一些精妙绝伦的技巧把它们联系在了一起。初学MFC编程会让人一头雾水,所以我们有必要通过Windows API编程来了解Windows程序的执行流程。,2.1 第一个Windows程序,通过编写一个最简单的Windows程序,可以让大家迅速理解和接受Windows编程的感念。就像所有编程语言中的Hello World程序是一样的。,2.1.1 Windows API,Windows API其实是一组函数,既可以用来控制整个计算机,也可以用来控制计算机的某个特定的功能,如键盘、鼠标、显卡等。假设你有三个函数,提供了与鼠标操作的接口程序。我可以把这三个函数名叫做InintializeMouse、SetMousePosition和GetMousePosition。这三个函数可以代表程序与鼠标间的简单的API。可以让你启动鼠标、把鼠标放到一个指定的位置以及得到鼠标光标的当前位置。这些简单的功能形成了你的应用程序和硬件其中的一种部件(如鼠标)之间的接口。,2.1.2 一个最简单的Windows程序,每当我们着手遍写一个新的计算机程序或者学习一种新的语言时,总是会急切地希望获得一些别人的经验。现在我们来编写一个最简单的C+ Windows程序。因为我们编写的是Windows程序,所以需要用到VC+集成开发环境来编译我们所写的程序。,2.1.3 WinMain函数,DOS或UNIX环境中的传统C/C+程序用main()函数作为程序入口点,而Windows程序用WinMain函数作为程序入口点。所以main和WinMain从功能上看似乎是相同的,也就是说,它们两个都是某个特定程序中第一个被调用的函数。 我们可以通过MSDN查阅WinMain函数的原型声明如下所示。,2.1.3 WinMain函数,2.1.4 Begin程序的核心,我们要写Windows程序时,同样也需要包含一个头文件。在这个头文件中包含了我们需要调用的API函数。WINDOWS.H包含了许多重要的常量、函数、结构和宏。用C或C+ 编写的Windows程序都要用到这些信息。所以我们在编写Windows程序时候都需要在包含WINDOWS.H头文件。 Begin程序的核心是一个MessageBox()函数,它看起来很简单。调用其它API函数和它有很大的相似性,所以我们有必要掌握它。该函数的原型声明为如下所示。,2.1.4 Begin程序的核心,2.2 创建窗口,上一节我们创建了一个简单的Windows程序,用来弹出一个消息框,但是还没有看到一个真正的窗口。在这一节我们将搭建一个Windows传统窗口程序。,2.2.1 程序清单,下面我们来编写代码,创建一个真正的窗口,它可以完成最大化、最小化或改变尺寸等功能。在这一节中我们不必理解这段代码,只要知道它大概怎么工作就行。我们只需要能编译运行成功即可,具体细节将留在下一节中介绍。,2.2.2 主函数部分,主函数即WinMain()函数,在上面程序中我们可以把主函数分成三个模块:注册窗口、创建窗口、消息循环。 1.注册窗口 注册窗口是用来指明窗口在哪儿注册,我们可以从上面代码中截取出完成这项功能的代码。 2.创建窗口 创建窗口就是通过调用相应的API函数来创建我们刚刚注册好的窗口。 3.消息循环 进入消息循环后,即程序将无时不刻地监听来自外围设备所传递来的消息,然后做出相应的响应。,2.2.3 窗口过程函数部分,窗口过程函数即WndProc()函数,我们需要编写消息处理函数来告诉Windows程序遇到需要执行的消息时应该做什么。,2.2.4 MakeWin程序总结,现在,我们来对MakeWin程序做一下简单的总结。 程序中有两个主要的部分:WinMain()函数和WndProc()函数。 WinMain()函数中需要实现三个操作:注册窗口、创建窗口和消息循环。 发送给窗口的任何消息都要通过消息处理函数来传送。我们可以在消息处理函数中直接处理函数或者将其传给DefWindowProc()函数,它是默认消息处理函数。,2.3 标准的Windows程序,一个标准的Windows程序应该是模块化的,易于阅读和维护的。一个标准的Windows程序就像一个固定的架构,我们在使用的时候只需要往里面填需要实现功能的代码即可。本节我们将编写一个标准化的Windows程序,然后在其基础上详细介绍程序的执行细节。,2.3.1 一个模块化的Windows程序,下面我们来编写一个多模块的程序,这个程序展现了Windows程序的重要组成部分。,2.3.2 WinMain函数和WndProc函数概述,正如前面所说的那样,WinMain()函数的作用如同标准DOS程序中main()函数的作用。用C或C+编写的Windows应用程序总是从调用WinMain()函数开始的。 WinMain 的早期阶段就要创建一个窗口。在调用CreateWindow同时,可以定义窗口的标题和窗口尺寸以及执行其他重要的初始化工作步骤。当然不要忘记建立正确的消息循环,它是驱动程序的引擎。窗口过程就好像是你驾驶汽车,然后操纵汽车去鸣笛、加速以及避开障碍等过程。,2.3.3 注册窗口,注册窗口函数帮助你定义在屏幕上出现的窗口的类。所有窗口都是对象,每个对象都有一组特征。程序员填好WNDCLASS结构就等于告诉Windows,他所定义的对象或类时什么样子的。通常你完全可以不考虑Register()的具体方法,而只要将这段程序粘贴你的程序中即可。甚至可以不必考虑它的内容就可以调用它。 由于篇幅所限,上面定义中参数的具体含义读者可查阅MSDN获得。下面我们只讲解上面代码中各参数所赋值的含义。 通过查阅MSDN可以找到WNDCLASS的结构定义,其定义如下所示。,2.3.3 注册窗口,2.3.4 创建窗口,Register()函数用来定义的是一个一般的窗口类,而Create()函数用来定义的是一个窗口类的一个特定的实例。这个函数的核心是调用CreateWindow()函数,该函数的原型声明及参数的含义如下所示。 UpdateWindow()函数指示Windows发送一条WM_PAINT消息给新创建的窗口,2.3.4 创建窗口,2.3.5 消息循环,消息循环就相当于汽车的发动机。使程序持续不断的运行,然后根据驾驶员即用户的操作做出不同的响应。通过它才能知道用户是否按下一个键或鼠标按钮,或者操作系统是否传达某些重要消息,所有这些事件或动作都以消息的形式来传递的。 在应用程序的生存期中,Windows向它发送消息来报告用户或环境中的其它部分所采取的动作。这些消息放入一个队列中,用GetMessage()函数可以按需要从中取出消息。每当检索到一条消息,就把它放在一个消息结构中,该结构定义如下所示。,2.3.5 消息循环,2.3.6 窗口过程,消息循环一圈圈在反复轮回。在典型Windows程序的生存期中,这个过程以无休止循环方式重复着。它先从操作环境中得到消息,再把消息传给窗口过程函数WndProc()。 如果把消息响应的代码都写入窗口过程函数中,对于稍微大一点程序都会使这个函数变得异常庞大,使程序难以维护。所以我们通常将消息响应函数独立来写。,2.4 小结,本章首先介绍了怎样编写一个最简单的消息框程序;然后我

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论