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
の詳細については、「共通ダイアログ クラス」を参照してください 。
継承階層
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 の例を参照してください。
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示