程序11-7 COLORS3
COLORS3.C
/*-------------------------------------------------------------------------
COLORS3.C -- Version using Common Dialog Box
(c) Charles Petzold, 1998
--------------------------------------------------------------------------*/
#include
#include
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static CHOOSECOLOR cc ;
static COLORREF crCustColors[16] ;
cc.lStructSize = sizeof (CHOOSECOLOR) ;
cc.hwndOwner = NULL ;
cc.hInstance = NULL ;
cc.rgbResult = RGB (0x80, 0x80, 0x80) ;
cc.lpCustColors = crCustColors ;
cc.Flags = CC_RGBINIT | CC_FULLOPEN ;
cc.lCustData = 0 ;
cc.lpfnHook = NULL ;
cc.lpTemplateName = NULL ;
return ChooseColor (&cc) ;
}
ChooseColor函数使用一个CHOOSECOLOR型态的结构和含有16个DWORD的数组来存放常用颜色,使用者将从对话框中选择这些颜色之一。rgbResult字段可以初始化为一个颜色值,如果Flags字段的CC_RGBINIT旗标被设立,则显示该颜色。通常在使用这个函数时,rgbResult将被设定为使用者选择的颜色。
请注意,Color对话框的hwndOwner字段被设定为NULL。在ChooseColor函数呼叫DialogBox以显示对话框时,DialogBox的第三个参数也被设定为NULL。这是完全合法的,其含义是对话框不为另一个窗口所拥有。对话框的标题将显示在工作列中,而对话框就像一个普通的窗口那样执行。
您也可以在自己程序的对话框中使用这种技巧。使Windows程序只建立对话框,其它事情都在对话框程序中完成,这是可能的。