CMFCColorButton 类

CMFCColorButtonCMFCColorBar 类一起用于实现颜色选取器控件。

语法

class CMFCColorButton : public CMFCButton

成员

公共构造函数

名称 描述
CMFCColorButton::CMFCColorButton 构造新的 CMFCColorButton 对象。

公共方法

名称 描述
CMFCColorButton::EnableAutomaticButton 启用和禁用常规颜色按钮上方的“自动”按钮。 (标准的系统“自动”按钮标记为“自动”。)
CMFCColorButton::EnableOtherButton 启用和禁用常规颜色按钮下方的“其他”按钮。 (标准的系统“其他”按钮标记为“更多颜色”。)
CMFCColorButton::GetAutomaticColor 检索当前的自动颜色。
CMFCColorButton::GetColor 检索按钮的颜色。
CMFCColorButton::SetColor 设置按钮的颜色。
CMFCColorButton::SetColorName 设置颜色名称。
CMFCColorButton::SetColumnsNumber 设置颜色选取器对话框中的列数。
CMFCColorButton::SetDocumentColors 指定在颜色选取器对话框中显示的文档特定颜色的列表。
CMFCColorButton::SetPalette 指定标准显示颜色的调色板。
CMFCColorButton::SizeToContent 根据文本和图像大小更改按钮控件的大小。

受保护方法

名称 描述
CMFCColorButton::IsDrawXPTheme 指示是否以 Windows XP 的视觉样式显示当前颜色按钮。
CMFCColorButton::OnDraw 由框架调用以显示按钮的图像。
CMFCColorButton::OnDrawBorder 由框架调用以显示按钮的边框。
CMFCColorButton::OnDrawFocusRect 由框架调用以在按钮具有焦点时显示焦点矩形。
CMFCColorButton::OnShowColorPopup 即将显示颜色选取器对话框时由框架调用。
CMFCColorButton::RebuildPalette 将受保护的数据成员 m_pPalette 初始化为指定的调色板或默认的系统调色板。
CMFCColorButton::UpdateColor 当用户从颜色选取器对话框的调色板中选择颜色时由框架调用。

数据成员

名称 描述
m_bAltColorDlg 布尔值。 如果为 TRUE,则框架在单击其他按钮时显示 CMFCColorDialog 颜色对话框;如果为 FALSE,则显示系统颜色对话框。 默认值为 TRUE。 有关详细信息,请参阅 CMFCColorButton::EnableOtherButton
m_bAutoSetFocus 布尔值。 如果为 TRUE,则框架在显示菜单时将焦点设置到颜色菜单;如果为 FALSE,则不更改焦点。 默认值为 TRUE。
CMFCColorButton::m_bEnabledInCustomizeMode 指示是否为颜色按钮启用自定义模式。
m_Color COLORREF 值。 包含当前选定的颜色。
m_ColorAutomatic COLORREF 值。 包含当前选定的默认颜色。
m_Colors COLORREF 值的 CArray。 包含当前可用的颜色。
m_lstDocColors COLORREF 值的 CList。 包含当前文档颜色。
m_nColumns {1}一个整数。{2} 包含要在颜色选择菜单的颜色网格中显示的列数。
m_pPalette 指向 CPalette 的指针。 包含当前颜色选择菜单中可用的颜色。
m_pPopup 指向 CMFCColorPopupMenu 类对象的指针。 单击颜色按钮时显示的颜色选择菜单。
m_strAutoColorText 一个字符串。 颜色选择菜单中“自动”按钮的标签。
m_strDocColorsText 一个字符串。 显示文档颜色的颜色选择菜单中的按钮的标签。
m_strOtherText 一个字符串。 颜色选择菜单中“其他”按钮的标签。

备注

默认情况下,CMFCColorButton 类的行为类似于用于打开颜色选取器对话框的按钮。 颜色选取器对话框包含一系列小颜色按钮和一个显示自定义颜色选取器的“其他”按钮。 (标准系统“其他”按钮标记为“更多颜色”。)当用户选择一种新颜色时,CMFCColorButton 对象会反映更改并显示所选颜色。

直接在代码中创建颜色按钮控件,或使用 ClassWizard 工具和对话框模板创建。 如果直接创建颜色按钮控件,请将 CMFCColorButton 变量添加到应用程序,然后调用 CMFCColorButton 对象的构造函数和 Create 方法。 如果使用 ClassWizard,请将 CButton 变量添加到应用程序,然后将变量的类型从 CButton 更改为 CMFCColorButton

当框架调用 OnLButtonDown 事件处理程序时,颜色选取器对话框(CMFCColorBar 类)将由 CMFCColorButton::OnShowColorPopup 方法显示。 可以重写 CMFCColorButton::OnShowColorPopup 方法以支持自定义颜色选择。

CMFCColorButton 对象通过向其父级发送 WM_COMMAND | BN_CLICKED 通知来通知颜色正在更改。 父级使用 CMFCColorButton::GetColor 方法检索当前颜色。

示例

以下示例演示如何使用 CMFCColorButton 类中的各种方法配置颜色按钮。 这些方法设置颜色按钮的颜色及其列数,并启用自动按钮和其他按钮。 此示例是状态栏演示示例的一部分。

CMFCColorButton m_wndTextColor;
m_wndTextColor.EnableAutomaticButton(_T("Default"), afxGlobalData.clrBtnText);
m_wndTextColor.EnableOtherButton(_T("Other..."));
m_wndTextColor.SetColor((COLORREF)-1);
m_wndTextColor.SetColorName((COLORREF)-1, "Default Color");
m_wndTextColor.SetColumnsNumber(3);

要求

标头:afxcolorbutton.h

CMFCColorButton::CMFCColorButton

构造新的 CMFCColorButton 对象。

CMFCColorButton();

CMFCColorButton::EnableAutomaticButton

启用或禁用颜色选取器控件的“自动”按钮并设置自动(默认)颜色。

void EnableAutomaticButton(
    LPCTSTR lpszLabel,
    COLORREF colorAutomatic,
    BOOL bEnable=TRUE);

参数

lpszLabel
[in] 指定自动按钮的文本。

colorAutomatic
[in] 指定自动按钮默认颜色的“RGB”值。

bEnable
[in] 指定自动按钮是已启用还是已禁用。

注解

CMFCColorButton::EnableOtherButton

启用或禁用显示在常规颜色按钮下方的“其他”按钮。

void EnableOtherButton(
    LPCTSTR lpszLabel,
    BOOL bAltColorDlg=TRUE,
    BOOL bEnable=TRUE);

参数

lpszLabel
[in] 指定按钮的文本。

bAltColorDlg
[in] 指定当用户单击按钮时是要打开 CMFCColorDialog 对话框还是系统颜色对话框。

bEnable
[in] 指定“其他”按钮是已启用还是已禁用。

备注

单击“其他”按钮以显示颜色对话框。 如果 bAltColorDlg 参数为 TRUE,则显示 CMFCColorDialog 类;否则显示系统颜色对话框

CMFCColorButton::GetAutomaticColor

检索当前自动(默认)颜色。

COLORREF GetAutomaticColor() const;

返回值

表示当前自动颜色的“RGB”值。

注解

当前自动颜色由 CMFCColorButton::EnableAutomaticButton 方法设置。

CMFCColorButton::GetColor

检索当前选定的颜色。

COLORREF GetColor() const;

返回值

“RGB”值。

备注

CMFCColorButton::IsDrawXPTheme

指示是否以 Windows XP 的视觉样式显示当前颜色按钮。

BOOL IsDrawXPTheme() const;

返回值

如果支持视觉样式并且当前颜色按钮以 Windows XP 的视觉样式显示,则返回 TRUE;否则返回 FALSE。

CMFCColorButton::m_bEnabledInCustomizeMode

将颜色按钮设置为自定义模式。

BOOL m_bEnabledInCustomizeMode;

注解

如果需要将颜色按钮添加到自定义对话框的页面(或允许用户在自定义期间选择另一种颜色),请通过将 m_bEnabledInCustomizeMode 成员设置为 TRUE 来启用该按钮。 默认情况下,此成员设置为 FALSE。

CMFCColorButton::OnDraw

由框架调用以呈现按钮的图像。

virtual void OnDraw(
    CDC* pDC,
    const CRect& rect,
    UINT uiState);

参数

pDC
[in] 指向用于呈现按钮图像的设备上下文。

rect
[in] 用于界定按钮的矩形。

uiState
[in] 指定按钮的视觉状态。

备注

重写此方法以自定义渲染过程。

CMFCColorButton::OnDrawBorder

由框架调用以显示按钮的边框。

virtual void OnDrawBorder(
    CDC* pDC,
    CRect& rectClient,
    UINT uiState);

参数

pDC
[in] 指向用于绘制边框的设备上下文。

rectClient
[in] 由 pDC 参数指定的设备上下文中的矩形,该参数定义要绘制的按钮的边界

uiState
[in] 指定按钮的视觉状态。

备注

重写此函数以自定义颜色按钮的边框外观。

CMFCColorButton::OnDrawFocusRect

由框架调用以在按钮具有焦点时显示焦点矩形。

virtual void OnDrawFocusRect(
    CDC* pDC,
    const CRect& rectClient);

参数

pDC
[in] 指向用于绘制焦点矩形的设备上下文。

rectClient
[in] 由 pDC 参数指定的设备上下文中的矩形,该参数定义按钮的边界

注解

重写此方法以自定义焦点矩形的外观。

CMFCColorButton::OnShowColorPopup

在显示弹出颜色栏之前调用。

virtual void OnShowColorPopup();

备注

CMFCColorButton::RebuildPalette

将受保护的数据成员 m_pPalette 初始化为指定的调色板或默认的系统调色板。

void RebuildPalette(CPalette* pPal);

参数

pPal
[in] 指向逻辑调色板的指针,或 NULL。 如果为 NULL,则使用默认系统调色板。

CMFCColorButton::SetColor

指定按钮的颜色。

void SetColor(COLORREF color);

参数

color
[in]“RGB”值。

备注

CMFCColorButton::SetColorName

指定颜色的名称。

static void SetColorName(
    COLORREF color,
    const CString& strName);

参数

color
[in] 颜色的“RGB”值。

strName
[in] 颜色的名称。

注解

每个应用程序的颜色名称列表是全局性的。 因此,此方法会将其参数传输到 CMFCColorBar::SetColorName

CMFCColorButton::SetColumnsNumber

定义在用户选择颜色过程中呈现给用户的颜色表中显示的列数。

void SetColumnsNumber(int nColumns);

参数

nColumns
[in] 指定列数。

备注

用户可以从显示预定义颜色表的弹出颜色栏中选择一种颜色。 使用此方法定义表中的列数。

CMFCColorButton::SetDocumentColors

指定颜色集及其名称。 使用 CMFCColorBar 类对象显示该颜色集。

void SetDocumentColors(
    LPCTSTR lpszLabel,
    CList<COLORREF,COLORREF>& lstColors);

参数

lpszLabel
[in] 指定要与文档颜色集一起显示的标签。

lstColors
[in] 对“RGB”值列表的引用。

注解

CMFCColorButton 对象维护传输到 CMFCColorBar 类对象的“RGB”值列表。 显示颜色栏时,这些颜色会显示在一个特殊部分中,该部分的标签由 lpszLabel 参数指定

CMFCColorButton::SetPalette

指定要在弹出颜色栏上显示的标准颜色。

void SetPalette(CPalette* pPalette);

参数

pPalette
[in] 指向调色板的指针。

备注

CMFCColorButton::SizeToContent

调整按钮控件的大小以适合其文本和图像。

virtual CSize SizeToContent(BOOL bCalcOnly=FALSE);

参数

bCalcOnly
[in] 如果为非零值,则计算按钮控件的新大小,但不更改实际大小。

返回值

用于指定新按钮控件大小的 CSize 对象。

注解

CMFCColorButton::UpdateColor

当用户从单击颜色按钮时显示的颜色栏中选择一种颜色时由框架调用。

virtual void UpdateColor(COLORREF color);

参数

color
[in] 用户选择的颜色。

注解

UpdateColor 函数更改当前所选按钮的颜色,并使用 BN_CLICKED 标准通知发送 WM_COMMAND 消息来通知其父级。 使用 CMFCColorButton::GetColor 方法检索所选颜色。

另请参阅

层次结构图

CMFCButton 类
CMFCColorBar 类
CMFCColorButton::OnShowColorPopup
COLORREF
CPalette 类
CArray 类
CList 类
CString