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
は、ダイアログ ボックスの OK (IDOK) またはキャンセル (IDCANCEL) ボタンのユーザーの選択を返します。
DoModal
が IDOK を返す場合は、CColorDialog
のメンバー関数のいずれかを使用して、ユーザーが入力した情報を取得できます。
Windows CommDlgExtendedError 関数を使用すると、ダイアログ ボックスの初期化中にエラーが発生したかどうかを判断し、エラーの詳細を確認できます。
CColorDialog
は、Windows バージョン 3.1 以降に付属するCOMMDLG.DLL ファイルに依存しています。
ダイアログ ボックスをカスタマイズするには、 CColorDialog
からクラスを派生させ、カスタム ダイアログ テンプレートを指定し、メッセージ マップを追加して拡張コントロールからの通知メッセージを処理します。 未処理のメッセージは、基底クラスに渡す必要があります。
フック機能のカスタマイズは必要ありません。
Note
一部のインストールでは、フレームワークを使用して他のCDialog
オブジェクトを灰色にした場合、CColorDialog
オブジェクトは灰色の背景で表示されません。
CColorDialog
の使用方法の詳細については、「Common ダイアログ クラス」を参照してください。
継承階層
CColorDialog
要件
Header: 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();
戻り値
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
メンバー関数は、これらの色にアクセスできます。 これらの色は、
返された配列内の 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();
戻り値
ダイアログ ボックスを閉じてはならない場合は 0 以外。入力された色を受け入れる場合は 0 です。
解説
ユーザーが選択した色のカスタム検証を [色] ダイアログ ボックスで指定する場合にのみ、この関数をオーバーライドします。
ユーザーは、次の 2 つの方法のいずれかで色を選択できます。
カラー パレットで色をクリックします。 選択した色の RGB 値は、適切な RGB 編集ボックスに反映されます。
RGB 編集ボックスに値を入力する
OnColorOK
をオーバーライドすると、アプリケーション固有の理由で、ユーザーが共通の色ダイアログ ボックスに入力した色を拒否できます。
フレームワークでは既定の色の検証が提供され、無効な色が入力された場合にメッセージ ボックスが表示されるため、通常、この関数を使用する必要はありません。
OnColorOK
内から SetCurrentColor を呼び出して、色の選択を強制できます。 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 の例を参照してください。