CColorDialog::OnColorOK
更新 : 2007 年 11 月
ダイアログ ボックスに入力された色の妥当性をチェックするためにオーバーライドします。
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;
}
必要条件
ヘッダー : afxdlgs.h