Windows程序的内部运行原理.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows程序的内部运行原理

Windows程序的 内部运行原理;Windows程序设计是完全不同于Dos环境下的程序设计,是一种事件驱动的程序设计方法。主要是基于消息的。当用户需要完成某种功能时,会调用OS的某种支持,OS将用户的需要包装成某种消息,并投递到消息队列当中。然后利用应用程序从消息队列中取走消息并进行响应。;操作系统;在应用程序中要完成某个功能,都是以函数调用的形式实现的,同样,应用程序也是以函数调用的方式来通知操作系统执行相应的功能的。操作系统所能完成的每一个特殊功能通常都有一个函数与其对应。也就是说,操作系统把它能完成的功能以函数的形式提供给应用程序使用,应用程序对这些函数的调用就叫做系统调用。这些函数的集合就是windows操作系统提供给应用程序的编程接口,即API。如CreateWindow就是一个API函数,应用程序中调用这个函数,操作系统就会按照该函数提供的参数信息产生一个相应的窗口。 ;比如用户在某个程序活动时按下一个键,操作系统马上能够感知到这一事件,并且能知道用户按下的是哪个键,操作系统并不决定对这个事件如何做出反应,而是将这一事件转交给应用程序,由应用程序决定如何对这一事件做出反应。 好比有只蚊子叮了我们一口,我们的神经末梢(相当于操作系统)马上感知到这一事件,并传递给我们的大脑(相当于应用程序)。我们的大脑最终决定如何对这一事件做出反应,如将蚊子赶走,或是将蚊子拍死。对事件做出反应的过程就是消息响应。;操作系统是怎样将感知到的事件传递给应用程序的呢? 这是通过消息机制(Message)来实现的。操作系统将每个事件都包装成一个称为消息的结构体MSG来传递给应用程序。 typedef struct tagMSG { HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG; ;窗口是屏幕上的一个矩形区域,应用程序在该区域中显示数据并等待鼠标点击。 Windows应用程序的用户界面可以包含许多窗口,当然要对这些窗口进行标识。;操作系统要管理和操作这些资源,都是通过句柄来找到对应的资源。按资源的类型,又可将句柄细分成 图标句柄(HICON)、光标句柄(HCURSOR), 窗口句柄(HWND),应用程序实例句柄(HINSTANCE)等各种类型的句柄。 操作系统给每一个窗口指定的一个唯一的标识号即窗口句柄。句柄就是资源的标识,就象指针一样,我们要索引这样一个资源,就需要通过句柄去索引它。;int x,y; x=30,y=40; //x和y既可以用来表示坐标点,也可以用来表示宽度和高度,还可以用来表示身高和体重。 typedef int WIDTH; typedef int HEIGHT; WIDTH x; HEIGHT y; //好处:我们从变量的类型就可以知道x和y是用来表示宽度和高度。;操作系统会为每个应用程序建立一个消息队列。这个队列是个先进先出的缓冲区。消息队列中的每个元素都是一条消息。操作系统将生成的消息放在消息队列里。第一条消息放入第一格,第二条消息放入第二格,依次类推。应用程序总是取走消息队列中的第一条消息。第一条消息取走后,第二条消息往前移,成为第一条,剩余的消息依次前移。应用程序取得消息后,便能知道用户的操作以及应用程序的状态的变化。 当收到消息的时候,会编写针对这个消息的处理代码,这个过程就叫消息响应。消息响应是通过程序实现的,这就是Windows应用程序的主要代码区。;消息队列;在消息响应过程中,我们可能要调用操作系统提供的其他API函数以便完成特定的功能。例如收到窗口关闭的消息,我们就可以调用一个销毁窗口的API函数DestroyWindows去关闭该窗口,或者弹出一个消息框提示用户是否真的要关闭该窗口。;Windows程序的入口函数 int APIENTRY _tWinMain ( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow );;(1)设计一个窗口类 (2)注册窗口类 (3)创建窗口 (4)显示及更新窗口;设计窗口类;在我们的程序中经常要用到一类变量,这个变量里的每一位(bit)都对应某一特性。当该变量的某位为1时,表示有该位对应的哪种特性,当该位为0时,即没有该位所对应的特性。当变量中的某几位同时为1时,就表示同时具有几种特性的组合。一

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档