CMFCColorButton 和 CMFCColorBar 类一起用于实现颜色选取器控件。
语法
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
参数
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