本主题描述显示颜色对话框的示例代码,以便用户可以选择颜色。示例代码首先初始化CHOOSECOLOR结构,然后调用ChooseColor函数显示对话框。如果函数返回TRUE,表示用户选择了一个颜色,则示例代码使用所选颜色来创建新的实体画笔。
此示例使用CHOOSECOLOR结构初始化对话框,如下所示:
*使用指向静态COLORREF数组的指针初始化lpCustColors成员。阵列中的颜色最初是黑色的,但是静态数组保留用户为后续ChooseColor调用而创建的自定义颜色。
*设置CC_RGBINIT标志,并初始化rgbResultlb成员以指定对话框打开时最初选择的颜色。如果未指定,初始选择为黑色。该示例使用【rgbCurrent】静态变量在ChooseColor的调用之间保留所选值。
*设置CC_FULLOPEN标志,始终显示对话框的自定义颜色扩展名。
CHOOSECOLOR cc; //常见的对话框结构
static COLORREF acrCustClr[16]; //自定义颜色数组
HWND hwnd; //所有者窗口
HBRUSH hbrush; //刷柄
static DWORD rgbCurrent; //初始颜色选择
//初始化CHOOSECOLOR
ZeroMemory(&cc, sizeof(CHOOSECOLOR));
cc.lStructSize = sizeof(CHOOSECOLOR);
cc.hwndOwner = hwnd;
cc.lpCustColors = (LPDWORD) acrCustClr;
cc.rgbResult = rgbCurrent;
cc.Flags = CC_FULLOPEN | CC_RGBINIT;
if (ChooseColor(&cc)==TRUE) {
hbrush = CreateSolidBrush(cc.rgbResult);
rgbCurrent = cc.rgbResult;
}