颜色选择器组合框






4.62/5 (10投票s)
一个派生自组合框的类,
引言
James Twine 最初基于 Baldvin Hansson 的早期工作编写了这段代码。Mark Jackson (www.mjsoft.co.uk) 扩展了这段代码,在列表底部添加了一个“自定义...”选项,该选项会显示标准的颜色选择器对话框,并且添加了 DDX 数据交换。这段代码在许多其他方面也得到了改进和整理。
CColorPickerCB
类实现了一个组合框,它以颜色和颜色的名称显示颜色。可以在运行时添加或删除颜色,并且可以查询控件以获取 COLORREF
值或所选颜色的名称。您还可以设置所选颜色。
该控件正确处理选择、启用和禁用绘制。由于该控件使用字符串进行显示,因此可以对颜色进行排序。
要使用此控件,请创建一个带有 所有者绘制固定 和 包含字符串 样式的下拉列表组合框。将 CColorPickerCB
附加到该控件,然后就可以开始使用了!
初始化例程使用 X11 颜色集的一个子集填充颜色选择器,这些颜色是 IE 识别的颜色。
请注意,该控件将使用其宽度的 1/4 (四分之一) 用于颜色块,其余部分(减去几个像素)用于颜色文本。请确保使其足够宽。
致谢
感谢 Marcel Galema 发现我的反色(选中)颜色用法中的一个错误,并提出了修复建议。
也感谢 Paul Wardle 提供 DDX 例程。
公共函数
以下是 CColorPickerCB
类中的公共函数列表
COLORREF GetSelectedColorValue(void); // Get Selected Color Value CString GetSelectedColorName(void); // Get Selected Color Name void SetSelectedColorValue(COLORREF crColor); // Set Selected Color Value void SetSelectedColorName(PCSTR cpColor); // Set Selected Color Name // Initialize The Control With The Default Colorset void InitializeDefaultColors( void ); bool RemoveColor(PCSTR cpColor); // Remove Color From List bool RemoveColor(COLORREF crColor); // Remove Color From List int AddColor(PCSTR cpName, COLORREF crColor); // Insert A New Color