ATL 複合コントロール – プログラミング – Home

通知
すべてクリア

ATL 複合コントロール


HB
 HB
(@HB)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

こんにちわ。
ちょっと助けてください。

今、複合コントロールのActiveXを作成しています。
そのビューの上に、スタティック等を貼り付けたりしたりしています。

それの色を貼り付けたコントロールの色を変更することができません。
イベントハンドラでもOnDrawがありません。

なにか方法がないでしょうか?

よろしくお願いします。


引用解決済
トピックタグ
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 23年前
投稿: 196
 

>それの色を貼り付けたコントロールの色を変更することができません。

スタティックコントロールの親ウィンドウ側で、WM_CTLCOLOR を処理するのでは駄目で
すか?

>イベントハンドラでもOnDrawがありません

ATL の Windowing Support クラスには OnDraw() はありません。

画面表示に関しては、WM_PAINT を処理することで代替します。


返信引用
HB
 HB
(@HB)
ゲスト
結合: 23年前
投稿: 6
Topic starter  

お返事ありがとうございます。

ところで、お返事を参考にして作成しようと試みた所
WM_PAINTを以下のように下のですが、最初のif文に入ってきません。

LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
 if( wParam == (UINT)IDC_STATIC1 ){
   ; // ホントはここに描画処理を書きたい
}
return 0;
}

何か足りないものがあるのでしょうか?

また、スタティックコントロールの親ウインドウ側でWM_CTLCOLORを処理する方法
があったら、教えていただけるとありがたいです。
(メッセージループとかないですよね?)

よろしくお願いします。


返信引用
渋木宏明(ひどり)
 渋木宏明(ひどり)
(@渋木宏明(ひどり))
ゲスト
結合: 23年前
投稿: 196
 

>何か足りないものがあるのでしょうか?

足りないも何も、メタメタです。。。

WM_PAINT メッセージのリファレンスを確認してください。
wParam は WM_PAINT では未使用です。

>また、スタティックコントロールの親ウインドウ側でWM_CTLCOLORを処理する方法
>があったら、教えていただけるとありがたいです。

WM_PAINT メッセージの処理を(正しく)追加するのと、根本的には何ら変わりはありま
せん。
出鱈目にメンバ関数を追加したところで、それが使われることはありません。

ATL の CWindow クラスを使っているなら、ヘルプの

[ATL ウィンドウ クラス] - [ウィンドウのインプリメント]

というトピックで、「CWindow クラスによる Windows メッセージの処理法方」が解説さ
れているので、それを参考にしてください。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました