CMFCColorMenuButton 类
CMFCColorMenuButton
类支持用于启动颜色选取器对话框的菜单命令或工具栏按钮。
语法
class CMFCColorMenuButton : public CMFCToolBarMenuButton
成员
公共构造函数
名称 | 描述 |
---|---|
CMFCColorMenuButton::CMFCColorMenuButton | 构造 CMFCColorMenuButton 对象。 |
公共方法
名称 | 描述 |
---|---|
CMFCColorMenuButton::EnableAutomaticButton | 启用和禁用常规颜色按钮上方的“自动”按钮。 (标准的系统“自动”按钮标记为“自动”。) |
CMFCColorMenuButton::EnableDocumentColors | 启用显示特定于文档的颜色而不是系统颜色。 |
CMFCColorMenuButton::EnableOtherButton | 启用和禁用常规颜色按钮下方的“其他”按钮。 (标准的系统“其他”按钮标记为“更多颜色”。) |
CMFCColorMenuButton::EnableTearOff | 使用户能够移走颜色窗格。 |
CMFCColorMenuButton::GetAutomaticColor | 检索当前的自动颜色。 |
CMFCColorMenuButton::GetColor | 检索当前按钮的颜色。 |
CMFCColorMenuButton::GetColorByCmdID | 检索与指定命令 ID 对应的颜色。 |
CMFCColorMenuButton::OnChangeParentWnd | 在父工具栏更改时由框架调用。 |
CMFCColorMenuButton::OpenColorDialog | 打开颜色选择对话框。 |
CMFCColorMenuButton::SetColor | 设置当前颜色按钮的颜色。 |
CMFCColorMenuButton::SetColorByCmdID | 设置指定颜色菜单按钮的颜色。 |
CMFCColorMenuButton::SetColorName | 为指定的颜色设置新名称。 |
CMFCColorMenuButton::SetColumnsNumber | 设置 CMFCColorBar 对象显示的列数。 |
受保护方法
名称 | 描述 |
---|---|
CMFCColorMenuButton::CopyFrom | 将其他工具栏按钮复制到当前按钮。 |
CMFCColorMenuButton::CreatePopupMenu | 创建颜色选取器对话框。 |
CMFCColorMenuButton::IsEmptyMenuAllowed | 指示是否支持空菜单。 |
CMFCColorMenuButton::OnDraw | 由框架调用以在按钮上显示图像。 |
CMFCColorMenuButton::OnDrawOnCustomizeList | 在工具栏自定义对话框中显示 CMFCColorMenuButton 对象之前由框架调用。 |
备注
若要将原始菜单命令或工具栏按钮替换为 CMFCColorMenuButton
对象,请创建 CMFCColorMenuButton
对象,设置任何相应的 CMFCColorBar 类样式,然后调用 类的 ReplaceButton
方法。 如果自定义工具栏,请调用 CMFCToolBarsCustomizeDialog::ReplaceButton 方法。
在 CMFCColorMenuButton::CreatePopupMenu 事件处理程序期间,会创建颜色选取器对话框。 事件处理程序使用 WM_COMMAND 消息通知父框架。 CMFCColorMenuButton
对象会发送分配至原始菜单命令或工具栏按钮的控件 ID。
示例
以下示例演示如何使用 CMFCColorMenuButton
类中的各种方法创建和配置颜色菜单按钮。 在此示例中,首先创建一个 CPalette
对象,然后使用该对象构造 CMFCColorMenuButton
类的对象。 然后,通过启用 CMFCColorMenuButton
对象的“自动”按钮和“其他”按钮,并设置其颜色和列数来配置该对象。 此代码是 Word Pad 示例的一部分。
CPalette m_palColorPicker; // Palette for color picker
int m_nNumColours;
CMFCColorMenuButton *CFormatBar::CreateColorButton()
{
if (m_palColorPicker.GetSafeHandle() == NULL)
{
m_nNumColours = sizeof(crColours) / sizeof(ColourTableEntry);
ASSERT(m_nNumColours <= MAX_COLOURS);
if (m_nNumColours > MAX_COLOURS)
m_nNumColours = MAX_COLOURS;
// Create the palette
struct
{
LOGPALETTE LogPalette;
PALETTEENTRY PalEntry[MAX_COLOURS];
} pal;
LOGPALETTE *pLogPalette = (LOGPALETTE*)&pal;
pLogPalette->palVersion = 0x300;
pLogPalette->palNumEntries = (WORD)m_nNumColours;
for (int i = 0; i < m_nNumColours; i++)
{
pLogPalette->palPalEntry[i].peRed = GetRValue(crColours[i].crColour);
pLogPalette->palPalEntry[i].peGreen = GetGValue(crColours[i].crColour);
pLogPalette->palPalEntry[i].peBlue = GetBValue(crColours[i].crColour);
pLogPalette->palPalEntry[i].peFlags = 0;
}
m_palColorPicker.CreatePalette(pLogPalette);
}
CMFCColorMenuButton *pColorButton = new CMFCColorMenuButton(ID_CHAR_COLOR, _T("Text Color..."), &m_palColorPicker);
pColorButton->EnableAutomaticButton(_T("Automatic"), RGB(0, 0, 0));
pColorButton->EnableOtherButton(_T("More Colors..."));
pColorButton->EnableDocumentColors(_T("Document's Colors"));
pColorButton->EnableTearOff(ID_COLOR_TEAROFF, 5, 2);
pColorButton->SetColumnsNumber(8);
pColorButton->SetColor(RGB(0, 0, 255));
// Initialize color names:
for (int i = 0; i < m_nNumColours; i++)
{
CMFCColorMenuButton::SetColorName(crColours[i].crColour, crColours[i].szName);
}
return pColorButton;
}
继承层次结构
要求
标头:afxcolormenubutton.h
CMFCColorMenuButton::CMFCColorMenuButton
构造 CMFCColorMenuButton
对象。
CMFCColorMenuButton();
CMFCColorMenuButton(
UINT uiCmdID,
LPCTSTR lpszText,
CPalette* pPalette=NULL);
参数
uiCmdID
[in] 按钮命令 ID。
lpszText
[in] 按钮文本。
pPalette
[in] 指向按钮调色板的指针。
返回值
注解
第一个版本是默认构造函数。 对象的当前颜色和自动颜色初始化为黑色 (RGB(0, 0, 0))。
第二个构造函数将按钮初始化为与指定命令 ID 对应的颜色。
CMFCColorMenuButton::CopyFrom
将一个 CMFCToolBarMenuButton 类派生的对象复制到另一个对象。
virtual void CopyFrom(const CMFCToolBarButton& src);
参数
src
[in] 要复制的源按钮。
备注
替代此方法以复制从 CMFCColorMenuButton
对象派生的对象。
CMFCColorMenuButton::CreatePopupMenu
创建颜色选取器对话框。
virtual CMFCPopupMenu* CreatePopupMenu();
返回值
表示颜色选取器对话框的对象。
备注
当用户按下颜色菜单按钮时,框架会调用此方法。
CMFCColorMenuButton::EnableAutomaticButton
启用和禁用常规颜色按钮上方的“自动”按钮。 (标准的系统“自动”按钮标记为“自动”。)
void EnableAutomaticButton(
LPCTSTR lpszLabel,
COLORREF colorAutomatic,
BOOL bEnable=TRUE);
参数
lpszLabel
[in] 指定按钮变为“自动”时显示的按钮文本。
colorAutomatic
[in] 指定新的自动颜色。
bEnable
[in] 指定该按钮是否为自动按钮。
备注
“自动”按钮会应用当前默认颜色。
CMFCColorMenuButton::EnableDocumentColors
启用显示特定于文档的颜色而不是系统颜色。
void EnableDocumentColors(
LPCTSTR lpszLabel,
BOOL bEnable=TRUE);
参数
lpszLabel
[in] 指定按钮文本。
bEnable
[in] 若要显示特定于文档的颜色,则为 TRUE;若要显示系统颜色,则为 FALSE。
注解
当用户单击颜色菜单按钮时,使用此方法可显示当前文档颜色或系统调色板颜色。
CMFCColorMenuButton::EnableOtherButton
启用和禁用常规颜色按钮下方的“其他”按钮。 (标准的系统“其他”按钮标记为“更多颜色”。)
void EnableOtherButton(
LPCTSTR lpszLabel,
BOOL bAltColorDlg=TRUE,
BOOL bEnable=TRUE);
参数
lpszLabel
[in] 指定按钮文本。
bAltColorDlg
[in] 若要显示 CMFCColorDialog
对话框,则指定 TRUE;若要显示标准系统颜色对话框,则指定 FALSE。
bEnable
[in] 若要显示“其他”按钮,则指定 TRUE;否则指定 FALSE。 默认值为 TRUE。
注解
CMFCColorMenuButton::EnableTearOff
使用户能够移走颜色窗格。
void EnableTearOff(
UINT uiID,
int nVertDockColumns=-1,
int nHorzDockRows=-1);
参数
uiID
[in] 指定可拖曳窗格的 ID。
nVertDockColumns
[in] 指定在垂直停靠的颜色窗格中且状态为可拖曳的列数。
nHorzDockRows
[in] 指定水平停靠的颜色窗格中且状态为可拖曳的行数。
备注
调用此方法可为按下 CMFCColorMenuButton
按钮时弹出的颜色窗格启用“拆离”功能。
CMFCColorMenuButton::GetAutomaticColor
检索当前的自动颜色。
COLORREF GetAutomaticColor() const;
返回值
表示当前自动颜色的 RGB 颜色值。
备注
调用此方法以获取 CMFCColorMenuButton::EnableAutomaticButton 设置的自动颜色。
CMFCColorMenuButton::GetColor
检索当前按钮的颜色。
COLORREF GetColor() const;
返回值
按钮的颜色。
注解
CMFCColorMenuButton::GetColorByCmdID
检索与指定命令 ID 对应的颜色。
static COLORREF GetColorByCmdID(UINT uiCmdID);
参数
uiCmdID
[in] 命令 ID。
返回值
与指定命令 ID 对应的颜色。
注解
在应用程序中有多个颜色按钮时,请使用此方法。 当用户单击颜色按钮时,该按钮会在 WM_COMMAND 消息中将其命令 ID 发送至其父级。 GetColorByCmdID
方法使用命令 ID 检索相应的颜色。
CMFCColorMenuButton::IsEmptyMenuAllowed
指示是否支持空菜单。
virtual BOOL IsEmptyMenuAllowed() const;
返回值
如果允许空菜单,则为非零值;否则为零。
备注
默认情况下支持空菜单。 替代此方法以更改派生类中的此行为。
CMFCColorMenuButton::OnChangeParentWnd
在父工具栏更改时由框架调用。
virtual void OnChangeParentWnd(CWnd* pWndParent);
参数
pWndParent
[in] 指向新的父窗口的指针。
备注
CMFCColorMenuButton::OnDraw
由框架调用以在按钮上显示图像。
virtual void OnDraw(
CDC* pDC,
const CRect& rect,
CMFCToolBarImages* pImages,
BOOL bHorz=TRUE,
BOOL bCustomizeMode=FALSE,
BOOL bHighlight=FALSE,
BOOL bDrawBorder=TRUE,
BOOL bGrayDisabledButtons=TRUE);
参数
pDC
[in] 指向设备上下文的指针。
rect
[in] 用于限定要重新绘制的区域的矩形。
pImages
[in] 指向工具栏图像的列表。
bHorz
[in] 若要指定工具栏处于水平停靠状态,则为 TRUE;否则为 FALSE。 默认值为 TRUE。
bCustomizeMode
[in] 若要指定应用程序处于自定义模式,则为 TRUE;否则为 FALSE。 默认值为 FALSE。
bHighlight
[in] 若要指定突出显示按钮;则为 TRUE;否则为 FALSE。 默认值为 FALSE。
bDrawBorder
[in] 若要指定显示按钮的边框;则为 TRUE;否则为 FALSE。 默认值为 TRUE。
bGrayDisabledButtons
[in] 若要指定灰显禁用的按钮(使其变暗),则为 TRUE;否则为 FALSE。 默认值为 TRUE。
备注
CMFCColorMenuButton::OnDrawOnCustomizeList
在工具栏自定义对话框中显示 CMFCColorMenuButton
对象之前由框架调用。
virtual int OnDrawOnCustomizeList(
CDC* pDC,
const CRect& rect,
BOOL bSelected);
参数
pDC
[in] 指向设备上下文的指针。
rect
[in] 用于限定要绘制的按钮的矩形。
bSelected
[in] TRUE 指定按钮处于选定状态;否则为 FALSE。
返回值
按钮的宽度。
备注
当 CMFCColorMenuButton
对象在工具栏自定义过程中显示在列表框中时,框架会调用此方法。
CMFCColorMenuButton::OpenColorDialog
打开颜色选择对话框。
virtual BOOL OpenColorDialog(
const COLORREF colorDefault,
COLORREF& colorRes);
参数
colorDefault
[in] 在颜色对话框中选定的默认颜色。
colorRes
[out] 返回用户在颜色对话框中选择的颜色。
返回值
如果用户选择新颜色,则为非零值;否则为零。
注解
单击菜单按钮后,调用此方法以打开颜色对话框。 如果返回值为非零值,则用户选择的颜色存储在 colorRes 参数中。 使用 CMFCColorMenuButton::EnableOtherButton 方法在标准颜色对话框和 CMFCColorDialog 类对话框之间切换。
CMFCColorMenuButton::SetColor
设置当前颜色按钮的颜色。
virtual void SetColor(
COLORREF clr,
BOOL bNotify=TRUE);
参数
clr
[in] RGB 颜色值。
bNotify
[in] 若要将 clr 参数颜色应用于任何关联的菜单按钮或工具栏按钮,则为 TRUE;否则为 FALSE。
备注
调用此方法可更改当前颜色按钮的颜色。 如果 bNotify 参数为非零值,则任何关联的弹出菜单或工具栏上相应按钮的颜色将更改为 clr 参数指定的颜色。
CMFCColorMenuButton::SetColorByCmdID
设置指定颜色菜单按钮的颜色。
static void SetColorByCmdID(
UINT uiCmdID,
COLORREF color);
参数
uiCmdID
[in] 颜色菜单按钮的资源 ID。
color
[in] RGB 颜色值。
CMFCColorMenuButton::SetColorName
为指定的颜色设置新名称。
static void SetColorName(
COLORREF color,
const CString& strName);
参数
color
[in] 更改了名称的颜色的 RGB 值。
strName
[in] 颜色的新名称。
备注
CMFCColorMenuButton::SetColumnsNumber
设置要在颜色选择控件中显示的列数(CMFCColorBar 对象)。
void SetColumnsNumber(int nColumns);
参数
nColumns
[in] 要显示的列数。
注解
另请参阅
层次结构图
类
CMFCColorBar 类
CMFCToolBar 类
CMFCToolBarsCustomizeDialog 类
CMFCColorButton 类