Share via


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構造体は CHOO Standard Edition COLOR 型です

ダイアログ ボックスのコントロールを初期化した後、メンバー関数を DoModal 呼び出してダイアログ ボックスを表示し、ユーザーが色を選択できるようにします。 DoModal は、ダイアログ ボックスの OK (IDOK) またはキャンセル (IDCANCEL) ボタンのユーザーの選択を返します。

IDOK が返された場合 DoModal は、いずれかの CColorDialogメンバー関数を使用して、ユーザーが入力した情報を取得できます。

Windows CommDlgExtendedError 関数を使用すると、ダイアログ ボックスの初期化中にエラーが発生したかどうかを判断し、エラーの詳細を確認できます。

CColorDialog は、Windows バージョン 3.1 以降に付属する COMMDLG.DLL ファイルに依存しています。

ダイアログ ボックスをカスタマイズするには、クラスを CColorDialog派生させ、カスタム ダイアログ テンプレートを指定し、拡張コントロールからの通知メッセージを処理するメッセージ マップを追加します。 未処理のメッセージは、基底クラスに渡す必要があります。

フック機能のカスタマイズは必要ありません。

Note

一部のインストールでは、フレームワークを CColorDialog 使用して他 CDialog のオブジェクトを灰色にした場合、オブジェクトは灰色の背景で表示されません。

使用 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 の CHOO Standard Edition COLOR 構造体を参照してください。

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();

戻り値

IDOK または IDCANCEL。 IDCANCEL が返された場合は、Windows CommDlgExtendedError 関数を呼び出して、エラーが発生したかどうかを判断します。

IDOK と IDCANCEL は、ユーザーが [OK] または [キャンセル] ボタンを選択したかどうかを示す定数です。

解説

m_cc構造体のメンバーを設定して、さまざまな色のダイアログ ボックス オプションを初期化する場合は、これを呼び出すDoModal前に、ダイアログ ボックス オブジェクトが構築された後に行う必要があります。

呼び出した DoModal後、他のメンバー関数を呼び出して、ユーザーがダイアログ ボックスに入力した設定または情報を取得できます。

CColorDialog::CColorDialog例を参照してください。

CColorDialog::GetColor

ユーザーが選択した色に関する情報を取得するには、呼び出し後にこの関数を呼び出 DoModal します。

COLORREF GetColor() const;

戻り値

[色] ダイアログ ボックスで選択した色の 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();

戻り値

ユーザーが作成したカスタム カラーを格納する 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

ダイアログ ボックスの特性と値を格納するメンバーを持つ CHOO Standard Edition COLORの構造体。

CHOOSECOLOR m_cc;

解説

オブジェクトを構築した後、DoModal メンバー関数をCColorDialog呼び出す前に、m_ccを使用してダイアログ ボックスのさまざまな側面を設定できます。

// 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();

戻り値

ダイアログ ボックスを閉じてはならない場合は 0 以外。入力された色を受け入れる場合は 0 です。

解説

ユーザーが選択した色のカスタム検証を [色] ダイアログ ボックスで指定する場合にのみ、この関数をオーバーライドします。

ユーザーは、次の 2 つの方法のいずれかで色を選択できます。

  • カラー パレットで色をクリックします。 選択した色の RGB 値は、適切な RGB 編集ボックスに反映されます。

  • RGB 編集ボックスに値を入力する

OnColorOKオーバーライドすると、アプリケーション固有の理由で、ユーザーが共通の色ダイアログ ボックスに入力する色を拒否できます。

フレームワークでは既定の色の検証が提供され、無効な色が入力された場合にメッセージ ボックスが表示されるため、通常、この関数を使用する必要はありません。

SetCurrentColor を内部OnColorOKから呼び出して、色の選択を強制できます。 起動されると OnColorOK (つまり、ユーザーは [OK] をクリックして色の変更を受け入れます)、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

呼び出し後にこの関数を呼び出DoModalして、clr指定された色の値に現在の色の選択を強制します。

void SetCurrentColor(COLORREF clr);

パラメーター

Clr
RGB カラー値。

解説

この関数は、メッセージ ハンドラーまたは OnColorOK. ダイアログ ボックスは、clr パラメーターの値に基づいてユーザーの選択内容を自動的に更新します。

CColorDialog::OnColorOK例を参照してください。

関連項目

MFC サンプル MDI
MFC サンプル DRAWCLI
CCommonDialog クラス
階層図