reateWindow函式来完成建立弹出式视窗所需要完成的一切操作。Windows从对话方块模板中取得视窗的座标、大小、视窗样式、标题和功能表,从DialogBox的参数中获得执行实体代号和父视窗代号。它所需要的唯一其他资讯是一个视窗类别(假设对话方块模板不指定视窗类别的话)。Windows为对话方块注册一个专用的视窗类别,这个视窗类别的视窗讯息处理程式可以存取对话方块程序位址(该位址是您在DialogBox呼叫中指定的),所以它可以使程式获得该弹出式视窗所接收的讯息。当然,您可以通过自己建立弹出式视窗来建立和维护自己的对话方块。不过,使用DialogBox则更简单。
也许您希望受益於Windows对话方块管理器,但不希望(或者能够)在资源描述中定义对话方块模板,也可能您希望程式在执行时可以动态地建立对话方块。这时可以完成这种功能的函式是DialogBoxIndirect,此函式用资料结构来定义模板。
在ABOUT1.RC的对话方块模板中,我们使用缩写CTEXT、ICON和DEFPUSHBUTTON来定义对话方块所需要的三种型态的子视窗控制项。您还可以使用其他型态,每种型态都隐含一个特定的预先定义视窗类别和一种视窗样式。下表显示了与一些控制项型态相同的视窗类别和视窗样式:
|
PUSHBUTTON |
按钮 |
BS_PUSHBUTTON | WS_TABSTOP |
DEFPUSHBUTTON |
按钮 |
BS_DEFPUSHBUTTON | WS_TABSTOP |
CHECKBOX |
按钮 |
BS_CHECKBOX
| WS_TABSTOP |
RADIOBUTTON |
按钮 |
BS_RADIOBUTTON | WS_TABSTOP |
GROUPBOX |
按钮 |
BS_GROUPBOX
| WS_TABSTOP |
LTEXT |
静态文字 |
SS_LEFT |
WS_GROUP |
CTEXT |
静态文字 |
SS_CENTER |
WS_GROUP |
RTEXT |
静态文字 |
SS_RIGHT |
WS_GROUP |
ICON |
静态图示 |
SS_ICON |
EDITTEXT |
编辑 |
ES_LEFT |
WS_BORDER | WS_TABSTOP |
SCR |