ホーム WTL Mobile
色選択ダイアログ
ドキュメント種別 ATL/WTL に関する文書
最終更新日 2010/01/16
PR
 WTLではコモンダイアログの色選択ダイアログを CColorDialogImplというクラステンプレートでカプセル化しています。 これはATLのCDialogImplクラステンプレートのように基底クラスとしてのみ使用します。 atldlgs.hヘッダではCColorDialogImplから派生した CColorDialogクラスが定義されています。

// atldlgs.h
class CColorDialog : public CColorDialogImpl<CColorDialog>
{
    ...
    ...
			

 WTLのCColorDialogクラスは、MFCの同名のクラスと同等の機能を備えています。 以下に示すのは、CColorDialogクラスを使用する例です。



プロジェクトファイル ダウンロード
// [色]ダイアログ
CColorDialog dlg(RGB(255, 0, 0));
SHFullScreen(m_hWnd, SHFS_HIDESIPBUTTON);

if(dlg.DoModal() == IDOK){
    CString strMsg;
    strMsg.Format(_T("R:%d\nG:%d\nB:%d"),
        GetRValue(dlg.GetColor()),
        GetGValue(dlg.GetColor()),
        GetBValue(dlg.GetColor()));
    MessageBox(strMsg);
}
			

CColorDialogクラスのコンストラクタ引数はすべて省略できます。 引数は順に、デフォルトで選択する色、フラグ、親ウィンドウのハンドルを指定できます。

色選択ダイアログを表示するためにはCColorDialogクラスのメンバ関数であるDoModal()を呼び出します。 [OK]ボタンをタップして色選択ダイアログを閉じた場合は戻り値としてIDOKが返り、 [×]ボタンをタップして色選択ダイアログを閉じた場合は戻り値としてIDCANCELが返ります。

戻り値がIDOKの場合は、 GetColor()を呼び出すことによって選択された色を取得することができます。

なお、今回の例では、SIPボタンが表示されたままだと色選択ダイアログの一部が隠れてしまうため、 色選択ダイアログを表示する前にSHFullScreen()を呼び出してSIPボタンを非表示にしています。