第三章Win32应用程序设计.PDF
文本预览下载声明
第三章 Win32应用程序设计
第三章 Win32应用程序设计
环境下编程相比,急剧膨胀的程度代码大大增加了程序调试的困难,从而使得编写一个出色的
Windows应用程序要比编写一个出色的DOS需要考虑多得多的东西。
绘出程序的各个窗口和在窗口中恰当的安排每一个控件。对于具有一定基础的程序员而言,更重
信,然而,明确自己在编写Windows时所需做的工作是哪一些。换句话说,我们需要透过
方式生成的。同时,也只有深入的理解了MFC应用程序框架的运行机制,才可能用好和用活这一
工具,才能达到熟悉掌握Visual C++的境界。
尽管说MFC应用程序框架提供的是面向对象的Windows编程接口,这和传统的使用C语言和SDK
改变,它们仍然是通过消息来和操作系统,进而和用户进行交互的事件驱动的应用程序。MFC对
这一切进行了比较彻底的封装,它们隐藏在你所看不见的背面。即使你对这一切一无所知,你仍
过头去,看一看这些内容在SDK编写的应用程序是如何实现的,然后,再看一看在MFC中是如何
把它们一层一层的与程序员隔离开的。
因此,在本章中介绍相对已“过时”的Win32 SDK编程,并非是说以后也使用SDK来编写应用程
序,而在于让你通过它们更深入的从MFC的内部了解MFC,并且,对于某些术语和概念的说明和
澄清,也有助于你以后理解很多的东西。如果你一开始对这些东西不感兴趣,那么,你可以先暂
时跳过此章,继续阅读本书的其它部分。当你对于MFC中的某些问题感到不解,或者想知道MFC
究竟是如何工作的时候,再回过头来补充这些知识,也是完全可以的。
本章包括以下的内容:
● Windows应用程序的消息处理
● Win32 API和SDK
file:///G|/hgy/VC实例/Chap03.html(第 1/40 页)2008-1-30 12:51:39
第三章 Win32应用程序设计
● WinMain函数
● 窗口和窗口过程
● 32位编程的特点
第一节 事件驱动的应用程序
系统中,不可能像过去的DOS那样,由一个应用程序来享用所有的系统资源,这些资源是由
刻监视着用户的一举一动,并分析用户的动作与哪一个应用程序相关,然后,将用户的动作以消
息的形式发送给该应用程序,应用程序时刻等待着消息的到来,一但发现它的消息队列中有未处
理的消息,就获取并分析该消息,最后,应用程序根据消息所包含的内容采取适当的动作来响应
理,既然是这样,Windows就发送了个叫做WM_COMMAND的消息给应用程序,该消息所包含
相应的消息队列,应用程序的任务就是不停的从它的消息队列中获取消息,分析消息和处理消
息,直到一条接到叫做WM_QUIT消息为止,这个过程通常是由一种叫做消息循环的程序结构来
实现的。
一部分有意义,举一个例子,如果你的应用程序只使用鼠标,那么如WM_KEYUP、
WM_KEYDOWN和WM_CHAR等消息就没有任何意义,也就是说,应用程序中事实上不需要处
们需要处理的事件只是所有事件中的一小部分。
图3.1给出了一般Windows应用程序的执行流程。
过程式编程方法很不一样,编程者只能够预测用户所利用应用程序用户界面对象所进行的操作以
及为这些操作编写处理代码,却不可以这些操作在什么时候发生或者是以什么顺序来发生,也就
是说,我们不可能知道什么消息会在什么时候以什么顺序来临。
file:///G|/hgy/VC实例/Chap03.html(第 2/40 页)2008-1-30 12:51:39
第三章 Win32应用程序设计
图3. 1 Windows应用程序的基本流程
用程序定义,但是,在应用程序中并没有调用回调函数的代码,回调函数是供操作系统或者其子
系统调用的,这种调用通常发生在某一事件发生,或者在窗口或字体被枚举时。典型的回调函数
有窗口过程、对话框过程和钩子函数。其中的窗口过程和对话框过程将在本章后面的内容中讲
述。
第二节 Win32 API和SDK
说到Windows编程,就不能不谈到
图形用户界面中,应用程序的窗口、图标、菜单和对话框等就是由API来管理和维护的。
file:///G|/hgy/VC实例/Chap03.html(第 3/40 页)2008-1-30 12:51:39
第三章 Win32应用程序设计
3.1所示。
显示全部