分享方式:


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;
}

繼承階層架構

CObject

CMFCToolBarButton

CMFCToolBarMenuButton

CMFCColorMenuButton

需求

標頭: 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 類別