ダイアログ表示時、指定ピクチャの色指定をするには?

解決


メグロ  2007-07-21 01:21:27  No: 65757

環境  WindowsXP  VisualC++6.0

カラーダイアログで選択した色を、指定ピクチャに色の塗りつぶしは
出来たのですが、ダイアログ表示時に指定ピクチャに色の塗りつぶしが
出来ません。
OnInitDialogで処理しt

ご指導をよろしくお願いします。


メグロ  2007-07-22 00:24:36  No: 65758

OnCtlColor関数を作成して、その中に処理を入れたら、
ダイアログ表示時、ピクチャの色が変わりました。(この手法でよいのか?)

CWnd* cwndPicture = GetDlgItem(PictureCtrlID);
CClientDC myDC(cwndPicture);

CRect crectPicture;
cwndPicture->GetClientRect(crectPicture);

myDC.FillSolidRect(crectPicture, COLORREF);

この処理の場合、最後に色指定をしたピクチャにフォーカスが
あるみたいです。
フォーカスをなしにする方法を調べています。

ご指導をお願いします。


みい  2007-07-22 05:28:03  No: 65759

> この処理の場合、最後に色指定をしたピクチャにフォーカスが
> あるみたいです。
ちょいと確認させて下さい。
画面の初期表示時の話ですよね。
タブオーダー順の設定に関係なく最後に色指定したピクチャに
フォーカスが移るのですか?
それともイベントが最後に発行されるのが最後に色指定したピクチャ
に対してという意味でしょうか。


みい  2007-07-22 05:38:54  No: 65760

ちなみに全部塗り潰すだけならSetBkColorの方が簡単です。
領域取得する必要ないから。

私の場合は色塗り潰し表示だけなら、ピクチャを使わずに
CStaticを派生させて作った色付きスタティックを使っています
(文字列無しで背景色のみ設定)。
色付きスタティックはCColorStaticで検索かけたらあちこちに
転がっています。


メグロ  2007-07-23 22:29:38  No: 65761

>最後に色指定をしたピクチャにフォーカスがあるみたいです。
私の間違いでした。申し訳ありません。

ダイアログの初期表示時、そのダイアログへ最後に配置したピクチャだけ
色の塗りつぶし後、ピクチャのプロパティに設定した内容が
適用されていると思っています。
※ダイアログへダミーのピクチャを追加しました。

>ちなみに全部塗り潰すだけならSetBkColorの方が簡単です。
今、アップアップな状態なので、使い方は後日調べたいと思います。

みいさん、ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加