다음을 통해 공유


CColorDialog 클래스

색 선택 대화 상자를 애플리케이션에 통합할 수 있습니다.

구문

class CColorDialog : public CCommonDialog

멤버

공용 생성자

속성 설명
CColorDialog::CColorDialog CColorDialog 개체를 생성합니다.

공용 메서드

이름 설명
CColorDialog::D oModal 색 대화 상자를 표시하고 사용자가 선택할 수 있도록 합니다.
CColorDialog::GetColor COLORREF 선택한 색의 값을 포함하는 구조를 반환합니다.
CColorDialog::GetSavedCustomColors 사용자가 만든 사용자 지정 색을 검색합니다.
CColorDialog::SetCurrentColor 현재 색 선택을 지정된 색으로 강제 적용합니다.

보호된 메서드

속성 설명
CColorDialog::OnColorOK 대화 상자에 입력한 색의 유효성을 검사하려면 재정의합니다.

공용 데이터 멤버

이름 설명
CColorDialog::m_cc 대화 상자의 설정을 사용자 지정하는 데 사용되는 구조입니다.

설명

CColorDialog 개체는 표시 시스템에 대해 정의된 색 목록이 있는 대화 상자입니다. 사용자는 목록에서 특정 색을 선택하거나 만들 수 있습니다. 그러면 대화 상자가 종료되면 애플리케이션에 다시 보고됩니다.

개체를 CColorDialog 생성하려면 제공된 생성자를 사용하거나 새 클래스를 파생시키고 사용자 지정 생성자를 사용합니다.

대화 상자가 생성되면 m_cc 구조체의 값을 설정하거나 수정하여 대화 상자의 컨트롤 값을 초기화할 수 있습니다. m_cc 구조체는 CHOOSECOLOR 형식입니다.

대화 상자의 컨트롤을 초기화한 후 멤버 함수를 DoModal 호출하여 대화 상자를 표시하고 사용자가 색을 선택할 수 있도록 합니다. DoModal 는 대화 상자의 확인(IDOK) 또는 취소(IDCANCEL) 단추 중 하나를 선택한 사용자를 반환합니다.

IDOK를 반환하는 경우 DoModal 사용자의 멤버 함수 중 CColorDialog하나를 사용하여 사용자의 정보 입력을 검색할 수 있습니다.

Windows CommDlgExtendedError 함수를 사용하여 대화 상자를 초기화하는 동안 오류가 발생했는지 여부를 확인하고 오류에 대해 자세히 알아볼 수 있습니다.

CColorDialog 는 Windows 버전 3.1 이상과 함께 제공되는 COMMDLG.DLL 파일을 사용합니다.

대화 상자를 사용자 지정하려면 클래스 CColorDialog를 파생시키고, 사용자 지정 대화 템플릿을 제공하고, 확장된 컨트롤에서 알림 메시지를 처리하는 메시지 맵을 추가합니다. 처리되지 않은 모든 메시지는 기본 클래스에 전달되어야 합니다.

후크 함수를 사용자 지정할 필요는 없습니다.

참고 항목

프레임워크를 사용하여 다른 CDialog 개체를 CColorDialog 회색으로 지정한 경우 일부 설치에서 개체는 회색 배경으로 표시되지 않습니다.

사용에 CColorDialog대한 자세한 내용은 일반 대화 상자 클래스를 참조 하세요.

상속 계층 구조

CObject

CCmdTarget

CWnd

Cdialog

CCommonDialog

CColorDialog

요구 사항

헤더: afxdlgs.h

CColorDialog::CColorDialog

CColorDialog 개체를 생성합니다.

CColorDialog(
    COLORREF clrInit = 0,
    DWORD dwFlags = 0,
    CWnd* pParentWnd = NULL);

매개 변수

clrInit
기본 색 선택 영역입니다. 값이 지정되지 않은 경우 기본값은 RGB(0,0,0)(검정)입니다.

dwFlags
대화 상자의 함수 및 모양을 사용자 지정하는 플래그 집합입니다. 자세한 내용은 Windows SDK의 CHOOSECOLOR 구조를 참조하세요.

pParentWnd
대화 상자의 부모 또는 소유자 창에 대한 포인터입니다.

예시

// Show the Color dialog with all the default settings.
CColorDialog dlg1;
dlg1.DoModal();

// Show the fully opened Color dialog with red as the selected color.
CColorDialog dlg2(RGB(255, 0, 0), CC_FULLOPEN);
dlg2.DoModal();

CColorDialog::D oModal

이 함수를 호출하여 Windows 공통 색 대화 상자를 표시하고 사용자가 색을 선택할 수 있도록 합니다.

virtual INT_PTR DoModal();

Return Value

IDOK 또는 IDCANCEL. IDCANCEL이 반환되면 Windows CommDlgExtendedError 함수를 호출하여 오류가 발생했는지 여부를 확인합니다.

IDOK 및 IDCANCEL은 사용자가 확인 또는 취소 단추를 선택했는지 여부를 나타내는 상수입니다.

설명

m_cc 구조체의 멤버를 설정하여 다양한 색 대화 상자 옵션을 초기화하려면 호출 DoModal 하기 전에 대화 상자 개체를 생성한 후에 이 작업을 수행해야 합니다.

호출 DoModal한 후 다른 멤버 함수를 호출하여 사용자가 대화 상자에 입력한 설정 또는 정보를 검색할 수 있습니다.

예시

CColorDialog::CColorDialog에 대한 예제를 참조하세요.

CColorDialog::GetColor

호출 후 이 함수를 호출 DoModal 하여 사용자가 선택한 색에 대한 정보를 검색합니다.

COLORREF GetColor() const;

Return Value

색 대화 상자에서 선택한 색에 대한 RGB 정보가 들어 있는 COLORREF 값입니다.

예시

// Get the selected color from the CColorDialog.
CColorDialog dlg;
if (dlg.DoModal() == IDOK)
{
   COLORREF color = dlg.GetColor();
   TRACE(_T("RGB value of the selected color - red = %u, ")
         _T("green = %u, blue = %u\n"),
         GetRValue(color), GetGValue(color), GetBValue(color));
}

CColorDialog::GetSavedCustomColors

CColorDialog 개체를 사용하면 사용자가 색을 선택할 뿐만 아니라 최대 16개의 사용자 지정 색을 정의할 수 있습니다.

static COLORREF* PASCAL GetSavedCustomColors();

Return Value

사용자가 만든 사용자 지정 색을 저장하는 16개의 RGB 색 값 배열에 대한 포인터입니다.

설명

멤버 함수는 GetSavedCustomColors 이러한 색에 대한 액세스를 제공합니다. DoModal이 IDOK를 반환한 후에 이러한 색을 검색할 수 있습니다.

반환된 배열의 16개 RGB 값은 각각 RGB(255,255,255)(흰색)로 초기화됩니다. 사용자가 선택한 사용자 지정 색은 애플리케이션 내의 대화 상자 호출 사이에만 저장됩니다. 애플리케이션 호출 사이에 이러한 색을 저장하려면 초기화()와 같은 다른 방식으로 저장해야 합니다. INI) 파일입니다.

예시

// Get a pointer to an array of 16 RGB color values that stores
// custom colors created by the user from CColorDialog.
CColorDialog dlg;
if (dlg.DoModal() == IDOK)
{
   COLORREF *ccolor = dlg.GetSavedCustomColors();
   for (int i = 0; i < 16; i++)
   {
      TRACE(_T("RGB value of the selected color - red = %u, ")
            _T("green = %u, blue = %u\n"),
            GetRValue(ccolor[i]),
            GetGValue(ccolor[i]),
            GetBValue(ccolor[i]));
   }
}

CColorDialog::m_cc

멤버가 대화 상자의 특성과 값을 저장하는 CHOOSECOLOR 형식의 구조체입니다.

CHOOSECOLOR m_cc;

설명

개체를 생성한 CColorDialog 후 m_cc 사용하여 DoModal 멤버 함수를 호출하기 전에 대화 상자의 다양한 측면을 설정할 수 있습니다.

예시

// The code below uses CColorDialog::m_cc data member to
// customize the settings of CColorDialog. The CColorDialog will
// be shown as full open and with red as the selected color.
CColorDialog dlg;
dlg.m_cc.Flags |= CC_FULLOPEN | CC_RGBINIT;
dlg.m_cc.rgbResult = RGB(255, 0, 0);
dlg.DoModal();

CColorDialog::OnColorOK

대화 상자에 입력한 색의 유효성을 검사하려면 재정의합니다.

virtual BOOL OnColorOK();

Return Value

대화 상자를 해제하지 않아야 하는 경우 0이 아닙니다. 그렇지 않으면 0이면 입력된 색을 적용합니다.

설명

색 대화 상자에서 사용자가 선택한 색의 사용자 지정 유효성 검사를 제공하려는 경우에만 이 함수를 재정의합니다.

사용자는 다음 두 가지 방법 중 하나로 색을 선택할 수 있습니다.

  • 색상표에서 색을 클릭합니다. 선택한 색의 RGB 값이 적절한 RGB 편집 상자에 반영됩니다.

  • RGB 편집 상자에 값 입력

재정의 OnColorOK 를 사용하면 애플리케이션별 이유로 사용자가 공통 색 대화 상자에 입력하는 색을 거부할 수 있습니다.

일반적으로 프레임워크는 색의 기본 유효성 검사를 제공하고 잘못된 색을 입력하면 메시지 상자를 표시하기 때문에 이 함수를 사용할 필요가 없습니다.

내에서 OnColorOK SetCurrentColor를 호출하여 색을 강제로 선택할 수 있습니다. 실행 OnColorOK 되면(즉, 사용자가 확인을 클릭하여 색 변경을 수락함) GetColor를 호출하여 새 색의 RGB 값을 가져올 수 있습니다.

예시

// Override OnColorOK to validate the color entered to the
// Red, Green, and Blue edit controls. If the color
// is BLACK (i.e. RGB(0, 0,0)), then force the current color
// selection to be the color initially selected when the
// dialog box is created. The color dialog won't close so
// user can enter a new color.
BOOL CMyColorDlg::OnColorOK()
{
   // Value in Red edit control.
   COLORREF clrref = GetColor();
   if (RGB(0, 0, 0) == clrref)
   {
      AfxMessageBox(_T("BLACK is not an acceptable color. ")
                    _T("Please enter a color again"));

      // GetColor() returns initially selected color.
      SetCurrentColor(GetColor());

      // Won't dismiss color dialog.
      return TRUE;
   }

   // OK to dismiss color dialog.
   return FALSE;
}

CColorDialog::SetCurrentColor

현재 색 선택을 clr에 지정된 색 값으로 강제 적용하려면 호출 후 이 함수를 호출 DoModal 합니다.

void SetCurrentColor(COLORREF clr);

매개 변수

clr
RGB 색 값입니다.

설명

이 함수는 메시지 처리기 또는 OnColorOK. 대화 상자는 clr 매개 변수의 값에 따라 사용자의 선택을 자동으로 업데이트합니다.

예시

CColorDialog::OnColorOK에 대한 예제를 참조하세요.

참고 항목

MFC 샘플 MDI
MFC 샘플 DRAWCLI
CCommonDialog 클래스
계층 구조 차트