Windows 的对话框依其与父窗口的关系,分为两类:
<1>「令其父窗口除能,直到对话框结束」,这种称为modal 对话框。
<2> 父窗口与对话框共同运行」,这种称为modeless 对话框。
比较常用的是modal 对话框。为了做出一个对话框,程序员必须准备两样东西:
<1>对话框模板(dialog template)。这是在RC 文件中定义的一个对话框外貌,以各种方式决定对话框的大小、字形、内部有哪些控制组件、各在什么位置...等等。
<2>对话框函数(dialog procedure)。其类型非常类似窗口函数,但是它通常只处理WM_INITDIALOG 和WM_COMMAND 两个消息。对话框中的各个控制组件也都是小小窗口,各有自己的窗口函数,它们以消息与其管理者(父窗口,也就是对话框)沟通。而所有的控制组件传来的消息都是WM_COMMAND,再由其参数分辨哪一种控制组件以及哪一种通告(notification)。
【Modal 对话框的激活与结束,靠的是DialogBox 和EndDialog 两个API 函数】
对话框的诞生、运作与结束
2、模块定义文件<.DEF>
Windows 程序需要一个模块定义文件,将模块名称、程序节区和资料节区的内存特性、模块堆积(heap)大小、堆栈(stack)大小、所有callback 函数名称...等等登记下来。【VC++中现在已经不再需要模块定义文件】
3、资源描述档<.RC>
RC 文件是一个以文字描述资源的地方。常用的资源有九项之多,分别是ICON、CURSOR、BITMAP、FONT、DIALOG、MENU、ACCELERATOR、STRING、VERSIONINFO。还可能有新的资源不断加入。这些文字描述需经过RC 编译器,才产生可使用的二进制代码。
4、Windows 程序的生与死
通过以上的介绍已经了解Windows 程序的架构以及它与Windows 系统之间的关系。对Windows 消息种类以及发生时机的透彻了解,正是程序设计的关键。下面以窗口的诞生和死亡,说明消息的发生与传递,以及应用程序的兴起与结束。
窗口的生命周期
5、为什么结束一个程序复杂如斯?因为操作系统与应用程序职司不同,二者是互相合作的关系,所以必需各做各的份内事,并互以消息通知对方。如果不依据这个游戏规则,可能就会有麻烦产生。
[今天稍微有些头疼,偷下懒,少看一点儿]