다음을 통해 공유


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 클래스 스타일을 설정한 다음 CMFCToolBar 클래스 클래스메서드를 호출 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;
}

상속 계층 구조

CObject

CMFCToolBarButton

CMFCToolBarMenuButton

CMFCColorMenuButton

요구 사항

헤더: afxcolormenubutton.h

CMFCColorMenuButton::CMFCColorMenuButton

CMFCColorMenuButton 개체를 생성합니다.

CMFCColorMenuButton();

CMFCColorMenuButton(
    UINT uiCmdID,
    LPCTSTR lpszText,
    CPalette* pPalette=NULL);

매개 변수

uiCmdID
[in] 단추 명령 ID입니다.

lpszText
[in] 단추 텍스트입니다.

pPalette
[in] 단추의 색상표에 대한 포인터입니다.

Return Value

설명

첫 번째 생성자는 기본 생성자입니다. 개체의 현재 색 및 자동 색은 검정(RGB(0, 0, 0))으로 초기화됩니다.

두 번째 생성자는 지정된 명령 ID에 해당하는 색으로 단추를 초기화합니다.

CMFCColorMenuButton::CopyFrom

하나의 CMFCToolBarMenuButton 클래스 파생 개체를 다른 개체에 복사합니다.

virtual void CopyFrom(const CMFCToolBarButton& src);

매개 변수

src
[in] 복사할 원본 단추입니다.

설명

개체에서 파생된 개체를 복사하려면 이 메서드를 재정의 CMFCColorMenuButton 합니다.

CMFCColorMenuButton::CreatePopupMenu

색 선택 대화 상자를 만듭니다.

virtual CMFCPopupMenu* CreatePopupMenu();

Return Value

색 선택 대화 상자를 나타내는 개체입니다.

설명

이 메서드는 사용자가 색 메뉴 단추를 누를 때 프레임워크에서 호출됩니다.

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] 대화 상자를 표시하려면 TRUE를 CMFCColorDialog 지정하고, 표준 시스템 색 대화 상자를 표시하려면 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;

Return Value

현재 자동 색을 나타내는 RGB 색 값입니다.

설명

CMFCColorMenuButton::EnableAutomaticButton에 의해 설정된 자동 색을 가져오려면 이 메서드를 호출합니다.

CMFCColorMenuButton::GetColor

현재 단추의 색을 검색합니다.

COLORREF GetColor() const;

Return Value

단추의 색입니다.

설명

CMFCColorMenuButton::GetColorByCmdID

지정된 명령 ID에 해당하는 색을 검색합니다.

static COLORREF GetColorByCmdID(UINT uiCmdID);

매개 변수

uiCmdID
[in] 명령 ID입니다.

Return Value

지정된 명령 ID에 해당하는 색입니다.

설명

애플리케이션에 여러 색 단추가 있는 경우 이 메서드를 사용합니다. 사용자가 색 단추를 클릭하면 단추는 WM_COMMAND 메시지의 명령 ID를 부모에 보냅니다. 메서드는 GetColorByCmdID 명령 ID를 사용하여 해당 색을 검색합니다.

CMFCColorMenuButton::IsEmptyMenuAllowed

빈 메뉴가 지원되는지 여부를 나타냅니다.

virtual BOOL IsEmptyMenuAllowed() const;

Return Value

빈 메뉴가 허용되는 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

빈 메뉴는 기본적으로 지원됩니다. 파생 클래스에서 이 동작을 변경하려면 이 메서드를 재정의합니다.

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입니다.

Return Value

단추의 너비입니다.

설명

이 메서드는 도구 모음 사용자 지정 프로세스 중에 개체가 목록 상자에 표시될 때 CMFCColorMenuButton 프레임워크에서 호출됩니다.

CMFCColorMenuButton::OpenColorDialog

색 선택 대화 상자를 엽니다.

virtual BOOL OpenColorDialog(
    const COLORREF colorDefault,
    COLORREF& colorRes);

매개 변수

colorDefault
[in] 색 대화 상자에서 선택된 기본 색입니다.

colorRes
[out] 색 대화 상자에서 사용자가 선택한 색을 반환합니다.

Return Value

사용자가 새 색을 선택하는 경우 0이 아닌 경우 그렇지 않으면 0입니다.

설명

메뉴 단추를 클릭하면 이 메서드를 호출하여 색 대화 상자를 엽니다. 반환 값이 0이 아니면 사용자가 선택하는 색이 colorRes 매개 변수에 저장됩니다. CMFCColorMenuButton::EnableOtherButton 메서드를 사용하여 표준 색 대화 상자와 CMFCColorDialog 클래스 대화 상자 간에 전환합니다.

CMFCColorMenuButton::SetColor

현재 색 단추의 색을 설정합니다.

virtual void SetColor(
    COLORREF clr,
    BOOL bNotify=TRUE);

매개 변수

clr
[in] RGB 색 값입니다.

bNotify
[in] 연결된 메뉴 단추 또는 도구 모음 단추에 clr 매개 변수 색을 적용하려면 TRUE이고, 그렇지 않으면 FALSE입니다.

설명

현재 색 단추의 색을 변경하려면 이 메서드를 호출합니다. bNotify 매개 변수가 0이 아닌 경우 연결된 팝업 메뉴 또는 도구 모음의 해당 단추 색이 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 클래스