系统调色板对话框可以分为三个部分,Basic colors、Custom colors和Extended。
创建一个调色板对话框,只需要定义一个CHOOSECOLOR的变量,配置这个结构体的成员,然后以这个变量为参数调用ChooseColor函数即可。
CHOOSECOLOR结构体:
lStructSize 结构体的大小,通常初始化为sizeof(CHOOSECOLOR)。
hwndOwner 创建调色板对话框的窗口的句柄,可以为NULL。
rgbResult 返回结果的成员。
lpCustColors 颜色缓冲区,大小为16个COLORREF,Custom colors的初始值。
Flages 最复杂的一个成员,所有的属性和特征,都是由这个成员决定,可以有一系列的值或。
/*
hInstance、lCustData、lpfnHook、lpTemplateName 如果不使用复杂的模板,则可以忽略这四个参数。
*/
如果Flages设置了CC_RGBINIT位,则对话框中初始选中的rgbResult的值表示的颜色,如果rgbResult的值表示的颜色不在Basic colors中,那么默认选中第一个。
如果Flages设置了CC_FULLOPEN,则三个区域都显示出来,如果设置CC_PREVENTFULLOPEN,则EXTENDED区域将不会显示,而且Define Custom Colors按钮无效。
这是长用到的三个标记。
配置好结构体以后,调用ChooseColor函数,就会弹出调色板对话框,如果点击OK按钮,函数返回TRUE,选择的结果存放在rgbResult中;如果在点击OK之前使用了Add to Custom Colors按钮,那么lpCustColors缓冲中的值将会发生改变。
如果想在第二次弹出调色板对话的时候,Custom Colors中的16个颜色保持上一次的配置,只要妥善保管好lpCustColors缓冲区就好了。