windows程序的运行原理以及VC++的实现过程.doc

windows程序的运行原理以及VC++的实现过程.doc

ID:61487950

大小:30.00 KB

页数:7页

时间:2021-02-05

windows程序的运行原理以及VC++的实现过程.doc_第1页
windows程序的运行原理以及VC++的实现过程.doc_第2页
windows程序的运行原理以及VC++的实现过程.doc_第3页
windows程序的运行原理以及VC++的实现过程.doc_第4页
windows程序的运行原理以及VC++的实现过程.doc_第5页
资源描述:

《windows程序的运行原理以及VC++的实现过程.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、windows程序的运行原理以及VC++的实现过程作者:佚名文章来源:网络操作系统以消息机制把输入设备的变化传递给我们的应用程序,操作系统所扮演的角色是神经末梢        APP系统调用API         OS 输出      输入 HARDWARE操作系统之所以成为操作系统是因为它能够控制硬件的设备,能够控制声卡发出声音,能够控制显卡画一个窗口,但它是如何实现这些功能就不是我们所关心的了,这些是写汇编的人员所要做的事情。操作系统又能够从输入设备获得信息,譬如说,操作系统能够感受到鼠标的移动,并且还能知道鼠标

2、移动后的位置。再比如说操作系统能感受到键盘的按下,并且知道按下的是哪个键,这些都表明操作系统和输入输出设备有一个关系,至于操作系统怎样去控制输入设备以及怎样把输入设备的信息拿到手的,这些我们都不用关心,这些是写操作系统的人或者写驱动程序的人所要干的事。由于应用程序是运行在操作系统上的,我们所关心的是应用程序和操作系统之间有什么样的关系。就仿佛是机器人能够走路,但是机器人要走几步,向哪个方向走,这些是机器人不关心的,它只是说我有走路的能力,至于怎么走需要主人对它发号施令了,如果我们要求机器人向南走5步,机器人才能完成行

3、走的操作。同样对于操作系统来说,操作系统能够控制声卡发出声音,但是具体发出什么样的声音,是美妙的还是悲伤的就由应用程序来告诉操作系统的,应用程序怎样告诉操作系统呢,我们在编写C语言的时候通过调用函数来让操作系统干某事,操作系统能够执行各种各样的功能,它把这些功能都以函数的形式提供给应用程序,应用程序通过调用这些函数来通知操作系统该干什么事情,操作系统的各种各样的功能都对应相应的函数,这些函数的集合叫做API。如控制机器人的函数集合我们叫robotAPI,像JAVA里也有操作我们的系统的函数,我们把它叫做JAVAAPI

4、,这里的API与WINDOWSAPI是没有关系的。每个应用程序都有一个队列,叫消息队列,什么叫队列呢?其实就是一个缓冲区(就是定义的一个数组,数组有多大,缓冲区就有多大),然后你可以往里面存数,别人就可以从里面取数。先取的是你最先存入的数。就好象寻呼台的寻呼系统,来了一个寻呼信息,就有寻呼小姐将该信息交给发射机发布出去,如果在一秒钟一次来了很多个寻呼请求,发射机就有可能忙不过来,为了不至于把信息丢失,我们就准备一个很大的缓冲区,有100个格子,来一个寻呼请求就往这个缓冲区里放一个,然后由发射机从里面取,总是先取最先放

5、进去的,一个往里面放,一个从里面取,虽然说可能会有些延迟,但我们保证了寻呼的请求没有丢失,这点也体现在我们的操作系统忙的时候我们执行了关闭窗口的命令,可能窗口当时没有立即关闭,但过了一会还是关闭了窗口,这也是队列的应用,队列就好比食堂里的排队买饭,排在前面的先买到饭,第一个买到饭后就离开,而第二个此时就成了第一个,后面的依次往前移动,这就是队列先进先出的特点。我们这里的消息队列存放的是消息,描述这个消息就要用结构体(MSG),因为一个消息要包含一些辅助说明消息的信息。下面讲解MSG,每一个消息都是跟窗口相关联的(也就

6、是一个消息必须由一个窗口接收),这是因为消息都有目标的,这样消息才能正确的到达目标窗口,且该目标窗口此时应具有焦点,如启动两个记事本程序,当按下键盘的时候,消息只能到达具有焦点的窗口上。第二个参数是标识消息的整数,第三四参数是对消息进行补充说明的,如有键盘消息,你到底按下的是哪个键,这些信息都包含在这两个参数中。第五个参数是发出消息的时间,最后一个参数是鼠标所在的位置。用GOTODefinition查看LPARAM等类型的原型。讲解句柄,我们学习WINDOWS程序就要接触句柄(HANDLE)了。其实句柄就是一个voi

7、d*,我们可以用GOTODefinition来查看HANDLE,在WINDOWS里面任何一个WINDOWS实体(如窗口、位图、刷子、菜单等)都要在内存中占一块空间,这块空间就应该有一个地址,为了区别于以前普通变量的地址,我们用HANDLE来标识该WINDOWS实体,HANDLE保存的是该WINDOWS实体的地址,以便后面对该WINDOWS实体进行操作,如以后我们要哪个窗口最大化,我必须告诉操作系统我所要操作的窗口,那么我递给操作系统的是一个句柄。我们看到的HWND、HMENU、HBURSH其实都是HANDLE。我们编

8、的程序是从消息队列里取消息,消息被取出时是以一个MSG结构体提供给用户的,然后对消息进行处理。在消息处理的时候我们又调用了WINDOWS的API函数,如关闭窗口退出程序,当我们点了关闭按钮就收到了WM_CLOSE,然后我们在这个消息里调用了WINDOWS的API函数去销毁窗口,当操作系统真的把窗口销毁后会又报告一个消息回来等候你的应答-WM_D

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。