一、Windows对话框
如果有很多输入超出了菜单可以处理的程度,那么我们可以使用对话框来取得输入信息。程序写作者可以通过在某选项后面加上省略号(…)来表示该菜单项将启动一个对话框。
对话框的一般形式是包含多种子窗口控件的弹出式窗口,这些控件的大小和位置在程序资源描述文件的「对话框模板」中指定。虽然程序写作者能够「手工」定义对话框模板,但是现在通常是在Visual C++ Developer Studio中以交谈式操作的方式设计的,然后由Developer Studio建立对话框模板。
当程序呼叫依据模板建立的对话框时,Microsoft Windows 98负责建立弹出式对话框窗口和子窗口控件,并提供处理对话框消息(包括所有键盘和鼠标输入)的窗口消息处理程序。有时候称呼完成这些功能的Windows内部程序代码为「对话框管理器」。
Windows的内部对话框窗口消息处理程序所处理的许多消息也传递给您自己程序中的函数,这个函数即是所谓的「对话框程序」或者「对话程序」。对话程序与普通的窗口消息处理程序类似,但是也存在着一些重要区别。一般来说,除了在建立对话框时初始化子窗口控件,处理来自子窗口控件的消息以及结束对话框之外,程序写作者不需要再给对话框程序增加其它功能。对话程序通常不处理WM_PAINT消息,也不直接处理键盘和鼠标输入。
对话框这个主题的含义太广了,因为它还包含子窗口控件的使用。不过,我们已经在第九章研究了子窗口控件。当您在对话框中使用子窗口控件时,第九章所提到的许多工作都可以由Windows的对话框管理器来完成。尤其是,在程序COLORS1中遇到在滚动条之间切换输入焦点的问题也不会在对话框中出现。Windows会处理对话框中的控件之间切换输入焦点所必需完成的全部工作。
不过,在程序中添加对话框要比添加图标或者菜单更麻烦一些。我们将从一个简单的对话框开始,让您对各部分之间的相互联系有所了解。