65.9K
CodeProject 正在变化。 阅读更多。
Home

颜色选择器组合框

2000年1月17日

CPOL
viewsIcon

290107

downloadIcon

10030

一个派生自组合框的类, 提供简单的颜色选择器

  • 下载演示项目 (James Twine 版本) - 26 Kb
  • 下载源代码文件 (James Twine 版本) - 8 Kb


  • 下载演示项目 (Mark Jackson 版本) - 18 Kb
  • 下载源代码文件 (Mark Jackson 版本) - 2 Kb
  • Sample Image - ColourPickerCB.gif

    引言

    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
    
    © . All rights reserved.