远程教育课件+Windows+API编程.ppt_第1页
远程教育课件+Windows+API编程.ppt_第2页
远程教育课件+Windows+API编程.ppt_第3页
远程教育课件+Windows+API编程.ppt_第4页
远程教育课件+Windows+API编程.ppt_第5页
已阅读5页,还剩594页未读 继续免费阅读

下载本文档

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

文档简介

1、吉林大学远程教育课件,Windows A P I编 程,主讲人 : 翟慧杰,学 时:48,(第一讲),前 言,Windows操作系统是当今世界上最为流行的操作系统之一,几乎每个台式机用户都使用过Windows,用过Windows平台下的应用软件。计算机业界对基于Windows应用软件的巨大需求刺激了Windows本身不断更新,同时也刺激了开发Windows应用软件的程序员队伍不断壮大。,前 言 (二),Windows操作系统同时也是一个大的函数库,其中包含了数以千计的函数,这些函数能完成各种各样的功能,包括窗口管理、图形设备接口、媒体控制、内存管理和系统扩展,这些函数都被封装在一个接口中,这个

2、接口就是Windows应用程序编程接口(Windows Application Progrmming Interface),简称Windows API。可以说,用户需要实现的所有功能通过Windows API都能实现。而且, Windows API作为操作系统不可分割的一部分,很好地体现了 Windows操作系统的特色。并且基于 Windows API的应用程序具有和 Windows操作系统的良好整合性,从而大大提高了软件的运行性能。,前 言 (三),Windows API也是认识Windows操作系统的一面镜子,通过它,用户可以深入系统地掌握Windows的方方面面。很难想象,一个程序员在没

3、有掌握Windows API的情况下,能编制出很好的基于Windows的应用程序来。 本课件较为全面地介绍了Windows API的编程结构及其在各个方面的具体应用,分析了大量的Windows API数据结构和函数,并结合实际应用,精心安排了大量的程序实例。读者不仅可以通过函数的分析说明来认识 Windows API,而且还可以通过编程实践来认识Windows API。书中所有的例子都在Windows 982000系统平台、 Visual C 6.0编译环境中经过了严格的测试。,第一章 Windows程序设计概述,Windows和Windows应用程序最大的优点就是用户界面的一致性。因为大多数

4、用户都在不同的软件包上工作,而每一个软件包都有自己的用户界面,所以用户界面一致性的设计就显得非常重要。Windows环境中的每一个窗口都包含了相同的基本特性,由于这些基本特性在应用程序中是一致的,因而用户能很容易地适应新的应用程序。 对用户的另一个好处是使用了基于图形的图标来代表应用程序和数据。由于Windows是一个图形用户界面,因而采用了图形图像来代表诸如文件、应用程序、窗口和目录等物理数据结构。用户可以通过鼠标的单击、双击及拖动等操作来管理这些物理结构。例如,对用户来说,双击一个代表某一应用程序的图标比起在DOS中进入相应的目录,并键人相应的应用程序名来使之执行要容易得多。,第一章 Wi

5、ndows程序设计概述(二),Windows操作系统提供的“所见即所得”也是一个非常友好的特点。Windows可以把文本文件等看作一串图形,而在屏幕上画出的图形,在打印的时候也将以同样形式出现。 Windows操作系统还提供了多任务功能。多任务对于用户是很重要的,因为它允许同时运行几个应用程序,用户无需退出一个应用程序再进入另一个应用程序,而只需简单地在各个应用程序之间来回切换就可以了。 Windows对于程序员的优越性: Windows中许多对用户的优越性也是对程序员的优越性,例如一致的用户界面。因为如果应用程序的界面对每一个应用程序都是相同的,程序员就可以建立一套基本的界面设计工具,用它们

6、来生成应用程序的用户界面(这就是可视化编程的思想):而在解决了程序的用户界面后,程序员可以花更多的时间去进行应用程序的功能设计。Windows图形用户界面的基本元素也是其具有的另一个优点。程序员可以很容易地设计出代表诸如文件和目录物理结构的图形表示,并能提供这些元素所具有的特性。,第一章 Windows程序设计概述(三),Windows对存储器的管理也是一个很明显的优点。这个优点可以使应用程序能够存取更多的内存资源,同时能保持系统设计中的灵活性。 Windows提供了开发独立于设备的图形的能力。一个设计良好的Windows应用程序并不对硬件直接存取图形,这意味着程序并不依赖于某一确定的系统配置

7、,所以,每一个程序员不需要为所有可能的显示器、适配卡和打印机开发设备驱动程序。,第一节 Windows发展历程,Microsoft Windows是一个应用于微型计算机上的基于图形用户界面的操作系统。它为应用程序提供了一个由一致的图形用户界面构成的多任务环境。由于应用程序之间的界面是一致的,因而对于用户来说,Windows应用程序相对于基于DOS的应用程序更容易学习和使用。多任务Windows系统的好处在于允许同时运行几个应用程序,特别是运行几个专为Windows环境而创建的应用程序。当然,Windows也提供了运行非Windows的MSDOS应用程序的机制。 Microsoft公司早在198

8、3年就开始了Windows操作系统第一版的研制工作,并于1985年发布了Windows的1l版。该版本的Windows支持自动的拼接式应用程序窗口及弹出式窗口。Windows经过不断升级换代,现在最新版本是 Windows 2000,它基于网络环境。本课件将结合 Windows 98系统平台,全面介绍 Windows API程序设计。,第二节 Windows 程序工作原理,Windows 程序设计是一种完全不同于传统的DOS方式的程序设计方法,它是一种事件驱动方式的程序设计模式。在程序提供给用户的界面中有许多可操作的可视对象。用户从所有可能的操作中任意选择,被选择的操作会产生某些特定的事件,这

9、些事件发生后的结果是向程序中的某些对象发出消息,然后这些对象调用相应的消息处理函数来完成特定的操作。Windows应用程序最大的特点就是程序没有固定的流程,而只是针对某个事件的处理有特定的子流程,Windows应用程序就是由许多这样的子流程构成的。 从上面的讨论中可以看出,Windows应用程序在本质上是面向对象的。程序提供给用户界面的可视对象在程序的内部一般也是一个对象,用户对可视对象的操作通过事件驱动模式触发相应对象的可用方法。程序的运行过程就是用户的外部操作不断产生事件,这些事件又被相应的对象的过程处理。 一般的程序流程如图ll所示。,一、理解Windows消息机制 Wndows系统是通

10、过消息驱动的。消息的组成如下: 消息名称(UINT)和两个参数(WPARAM,LPARAM)。,当用户进行了输入或是窗口的状态发生改变时,系统都会发送消息到某一个窗口。例如当选中某菜单命令之后会发送WM_COMMAND消息,WPARAM的高字(HIWORD(wParam)中是命令的ID号,对菜单来讲就是菜单ID。当然用户也可以定义自己的消息名称,并利用自定义消息来发送通知和传送数据。 一个消息必须由一个窗口接收。在窗口的过程( WNDPROC)中可以对消息进行分析,对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理,那么你可以定义对WM_ COMMAND消息进行处理的代码;如果希望在窗口

11、中进行图形输出,就必须对WM_PAINT消息进行处理。 Microsoft为窗口编写了默认的窗口过程,该过程负责处理那些你不处理的消息。正因为有了这个默认窗口过程,我们才可以利用Windows的窗口进行开发而不必过多关注窗口各种消息的处理。例如窗口在被拖动时会发送很多消息,而我们都可以不予理睬,让系统自己去处理。 说到消息就不能不说窗口句柄。系统通过窗口句柄在整个系统中唯一标识一个窗口,发送一个消息时必须指定一个窗口句柄,表明该消息由那个窗口接收。每个窗口都有自己的窗口过程,所以用户的输入就会被正确地处理。,下面有一段伪代码演示如何在窗口过程中处理消息: LONG WndProc(HWND h

12、wnd , UINT MessageType ,WPARAM , LPARAM) switch(MessageType) / 使用SWITCH语句将各种消息分开 case(WM_PAINT): doYourWindow (); / 在窗口需要重新绘制时进行输出 break ; case (WM_LBUTTONDOWN): doYourWork()/ 在鼠标左键被按下时进行处理 break ; default: callDefaultWndProc() ; / 对于其他情况就让系统自己处理 break; ,系统将维护一个或多个消息队列,所有产生的消息都会被放入或是插入队列中。系统会在队列中取出每

13、一条消息,根据消息的接收句柄将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环,在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统,所以Windows可以同时进行多个任务。下面的伪代码演示了消息循环的用法: While(1) idgetMessage(); if(id=quit) break; translateMessage(); 当该程序没有消息通知时,getMessage就不会返回,也就不会占用系统的CPU时间。,二、协同式多任务与抢先式多任务系统 在16位的操作系统中只有一个消息队列,所以系统必须等待当前

14、任务处理消息后才可以发送下一消息到相应程序,如果一个程序陷入死循环或是操作超时,系统就得不到控制权。这种多任务系统被称为协同式多任务系统。 Windows 3.x就是这种系统。 而32位的系统中每一个运行的程序都会有一个消息队列,所以系统可以在多个消息队列中转换,而不必等待当前程序完成消息处理才可以得到控制权。这种多任务系统就是所谓的抢先式多任务系统。 Wndows 2000系列以及以前的Wndows 9598NT都属于这种系统。,吉林大学远程教育课件,Windows A P I编 程,主讲人 : 翟慧杰,学 时:48,(第二讲),第三节 Windows应用程序设计特点,在过去,进行Windo

15、ws程序设计是一件痛苦异常的事情,原因是那时候还没有现在这些设计精美的应用程序开发工具。在今天,即便是一个对Windows程序内部运行机制几乎一无所知的初学者,只需要通过不到一天的学习,也可以使用如 Visual Basic之类的程序开发工具创建出功能完整的Windows应用程序来。从某种角度说,Windows程序不是编出来的,而是由程序员画出来的。但是要知道,一个出色的Windows的应用程序并不仅在于在屏幕上绘出程序的各个窗口和在窗口中恰当地安排每一个控件。对于具有一定基础的程序员而言,更重要的内容在于知道Windows和Windows应用程序的运行机制,以及它们之间以何种方式来进行通信。

16、换句话说,我们需要透过Windows漂亮的图形用户界面,认清在底层所发生的每一件事情。,Windows应用程序是事件驱动(或称作消息驱动)的应用程序。而 Windows 是一个多任务的操作系统,也就是说,在同一时刻,在Windows中有着多个应用程序的实例正在运行,例如我在打开字处理软件Notepad键人纯文本的同时,还打开了Winmap来播放歌曲。在这样的一个操作系统中,不可能像过去的DOS那样,由一个应用程序来享用所有的系统资源,这些资源是由Windows统一管理的。那么,特定的应用程序如何获得用户输入的信息呢?事实上,Windows时刻监视着用户的一举一动,并分析用户的动作与哪一个应用程

17、序相关,然后,将用户的动作以消息的形式发送给该应用程序,应用程序时刻等待着消息的到来,一旦发现它的消息队列中有未处理的消息,就获取并分析该消息,最后,应用程序根据消息所包含的内容采取适当的动作来响应用户所作的操作。 Windows为每一个应用程序,确切地说是每一个线程维护相应的消息队列。应用程序的任务就是不停地从它的消息队列中获取消息,分析和处理消息,直到接到一条叫作WM_QUIT消息为止,这个过程通常是由一种叫作消息循环的程序结构来实现的。,Windows能向应用程序发送的消息多达数百种,但是,对于一般的应用程序来说,只是其中的一部分有意义,如果你的应用程序只使用鼠标,那么如 WM_KEYU

18、P、WM_KEYDOWN和WM_CHAR等消息就没有任何意义,也就是说,应用程序中事实上不需要处理这些事件,对于这些事件,只需要交给Windows作默认的处理即可。因此,在应用程序中,我们需要处理的事件只是所有事件中的一小部分。 事件驱动围绕着消息的产生与处理展开,一条消息是关于发生的事件的消息。事件驱动是靠消息循环机制来实现的。,Windows 应用程序的消息来源有以下 4种: (l)输入消息:包括键盘和鼠标的输入。这一类消息首先放在系统消息队列中,然后由Windows将它们送入应用程序消息队列中,由应用程序来处理消息。 (2)控制消息:用来与Windows的控制对象,如列表框、按钮、检查框等进行双向通信。当用户在列表框中改动当前选择或改变了检查框的状态时发出此类消息。这类消息一般不经过应用程序消息队列,而是直接发送到控制对象上去。 (3)系统消息:对程序化的事件或系统时钟中断作出反应。一些系统消息,像DDE消息(动态数据交换消息)要通过Windows的系统消息队列,而有的则不通过系统消息队列而直接送入应用程序的消息队列,如创建窗口消息。 (4)用户消息:这是程序员自己定义并在应用程序中主动发出的,一般由应用程序的某一部分内部处理。 Windows程序在处理消息时使用了一种叫作回

温馨提示

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

评论

0/150

提交评论