CMFCColorMenuButton 類別
類別 CMFCColorMenuButton
支援功能表命令或啟動色彩選擇器對話框的工具列按鈕。
語法
class CMFCColorMenuButton : public CMFCToolBarMenuButton
成員
公用建構函式
名稱 | 描述 |
---|---|
CMFCColorMenuButton::CMFCColorMenuButton | 建構 CMFCColorMenuButton 物件。 |
公用方法
名稱 | 描述 |
---|---|
CMFCColorMenuButton::EnableAutomaticButton | 啟用和停用位於一般色彩按鈕上方的「自動」按鈕。 (標準系統自動按鈕已加上 標籤Automatic.) |
CMFCColorMenuButton::EnableDocumentColors | 啟用檔案特定色彩的顯示,而不是系統色彩。 |
CMFCColorMenuButton::EnableOtherButton | 啟用和停用位於一般色彩按鈕下方的「其他」按鈕。 (標準系統[其他] 按鈕已標示 更多色彩。 |
CMFCColorMenuButton::EnableTearOff | 可讓您卸除色彩窗格。 |
CMFCColorMenuButton::GetAutomaticColor | 擷取目前的自動色彩。 |
CMFCColorMenuButton::GetColor | 擷取目前按鈕的色彩。 |
CMFCColorMenuButton::GetColorByCmdID | 擷取對應至指定命令標識碼的色彩。 |
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
CMFCToolBar類別的方法。 如果您自定義工具列,請呼叫 CMFCToolBarsCustomizeDialog::ReplaceButton 方法。
色彩選擇器對話框會在處理 CMFCColorMenuButton::CreatePopupMenu 事件處理程式期間建立。 事件處理程式會以WM_COMMAND訊息通知父框架。 物件 CMFCColorMenuButton
會傳送指派給原始功能表命令或工具列按鈕的控件標識碼。
範例
下列範例示範如何使用 類別中的 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]按鈕命令標識碼。
lpszText
[in]按鈕文字。
pPalette
[in]按鈕調色盤的指標。
傳回值
備註
第一個建構函式是預設建構函式。 物件的目前色彩和自動色彩會初始化為黑色 (RGB(0, 0, 0))。
第二個建構函式會將按鈕初始化為對應至指定命令標識碼的色彩。
CMFCColorMenuButton::CopyFrom
將一個 CMFCToolBarMenuButton 類別衍生的物件複製到另一個。
virtual void CopyFrom(const CMFCToolBarButton& src);
參數
src
[in]要複製的來源按鈕。
備註
覆寫這個方法,以複製衍生自 CMFCColorMenuButton
對象的物件。
CMFCColorMenuButton::CreatePopupMenu
建立色彩選擇器對話框。
virtual CMFCPopupMenu* CreatePopupMenu();
傳回值
物件,表示色彩選擇器對話方塊。
備註
當使用者按下色彩功能表按鈕時,架構會呼叫此方法。
CMFCColorMenuButton::EnableAutomaticButton
啟用和停用位於一般色彩按鈕上方的「自動」按鈕。 (標準系統自動按鈕已加上 標籤Automatic.)
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]指定TRUE以顯示 CMFCColorDialog
對話框,或指定FALSE以顯示標準系統色彩對話框。
bEnable
[in]指定 TRUE 以顯示 [其他] 按鈕;否則為 FALSE。 預設值為TRUE。
備註
CMFCColorMenuButton::EnableTearOff
可讓您卸除色彩窗格。
void EnableTearOff(
UINT uiID,
int nVertDockColumns=-1,
int nHorzDockRows=-1);
參數
uiID
[in]指定卸除窗格的標識碼。
nVertDockColumns
[in]指定處於卸除狀態時,垂直停駐色彩窗格中的數據行數目。
nHorzDockRows
[in]指定處於卸除狀態時水準停駐色彩窗格的數據列數目。
備註
呼叫這個方法,以針對按下按鈕時 CMFCColorMenuButton
快顯的色彩窗格啟用「卸除」功能。
CMFCColorMenuButton::GetAutomaticColor
擷取目前的自動色彩。
COLORREF GetAutomaticColor() const;
傳回值
代表目前自動色彩的 RGB 色彩值。
備註
呼叫此方法以取得 CMFCColorMenuButton::EnableAutomaticButton 所設定的自動色彩。
CMFCColorMenuButton::GetColor
擷取目前按鈕的色彩。
COLORREF GetColor() const;
傳回值
按鈕的色彩。
備註
CMFCColorMenuButton::GetColorByCmdID
擷取對應至指定命令標識碼的色彩。
static COLORREF GetColorByCmdID(UINT uiCmdID);
參數
uiCmdID
[in]命令標識碼。
傳回值
對應至指定命令識別碼的色彩。
備註
當您應用程式中有數個色彩按鈕時,請使用此方法。 當使用者按兩下色彩按鈕時,按鈕會在WM_COMMAND訊息中傳送其命令標識元給其父系。 GetColorByCmdID
方法會使用命令標識碼來擷取對應的色彩。
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]TRUE 表示將 clr 參數色彩套用至任何相關聯的功能表按鈕或工具列按鈕,否則為 FALSE。
備註
呼叫此方法以變更目前色彩按鈕的色彩。 如果 bNotify 參數為非零值,則任何相關聯的快顯功能表或工具列上對應的按鈕色彩會變更為 clr 參數所指定的色彩。
CMFCColorMenuButton::SetColorByCmdID
設定指定之色彩功能表按鈕的色彩。
static void SetColorByCmdID(
UINT uiCmdID,
COLORREF color);
參數
uiCmdID
[in]色彩功能表按鈕的資源識別碼。
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 類別