选择颜色

【勇芳软件工作室】汉化HomePreviousNext

本主题描述显示颜色对话框的示例代码,以便用户可以选择颜色。示例代码首先初始化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;

}