对话方块(十五)

2010-12-30 21:13:56 · 作者: · 浏览: 41352
TON | WS_TABSTOP, 10, 20, 32, 14

当编译资源描述档时,这两条叙述在.RES和.EXE档案中的编码是相同的。在Developer Studio中,您可以使用 Controls 工具列中的 Custom Control 选项来建立此叙述。在ABOUT3程式中,我向您展示了如何用此选项建立一个控制项,且在您的程式中已定义了该控制项的视窗类别。

当您在对话方块模板中使用CONTROL叙述时,不必包含WS_CHILD和WS_VISIBLE样式。在建立子视窗时,Windows已经包含了这些视窗样式。CONTROL叙述的格式也说明Windows对话方块管理器在建立对话方块时就完成了此项操作。首先,就像我前面所讨论的,它建立一个弹出式视窗,其父视窗代号在DialogBox函式中提供。然後,对话方块管理器为对话方块模板中的每个控制项建立一个子视窗。所有这些控制项的父视窗均是这个弹出式对话方块。上面给出的CONTROL叙述被转换成一个CreateWindow呼叫,形式如下所示:

hCtrl =CreateWindow (TEXT ("button"), TEXT ("OK"),
WS_CHILD | WS_VISIBLE | WS_TABSTOP | BS_PUSHBUTTON,
10 * cxChar / 4, 20 * cyChar / 8,
32 * cxChar / 4, 14 * cyChar / 8,
hDlg, IDOK, hInstance, NULL) ;

其中,cxChar和cyChar是系统字体字元的宽度和高度,以图素为单位。hDlg参数是从建立该对话方块视窗的CreateWindow呼叫传回的值;hInstance参数是从DialogBox呼叫获得的。

更复杂的对话方块
 

ABOUT1中的简单对话方块展示了设计和执行一个对话方块的要点,现在让我们来看一个稍微复杂的例子。程式11-2给出的ABOUT2程式展示了如何在对话方块程序中管理控制项(这里用单选按钮)以及如何在对话方块的显示区域中绘图。

 程式11-2 ABOUT2
ABOUT2.C
/*--------------------------------------------------------------------------
ABOUT2.C -- Abo