こんにちわ。
ちょっと助けてください。
今、複合コントロールのActiveXを作成しています。
そのビューの上に、スタティック等を貼り付けたりしたりしています。
それの色を貼り付けたコントロールの色を変更することができません。
イベントハンドラでもOnDrawがありません。
なにか方法がないでしょうか?
よろしくお願いします。
>それの色を貼り付けたコントロールの色を変更することができません。
スタティックコントロールの親ウィンドウ側で、WM_CTLCOLOR を処理するのでは駄目で
すか?
>イベントハンドラでもOnDrawがありません
ATL の Windowing Support クラスには OnDraw() はありません。
画面表示に関しては、WM_PAINT を処理することで代替します。
お返事ありがとうございます。
ところで、お返事を参考にして作成しようと試みた所
WM_PAINTを以下のように下のですが、最初のif文に入ってきません。
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
{
if( wParam == (UINT)IDC_STATIC1 ){
; // ホントはここに描画処理を書きたい
}
return 0;
}
何か足りないものがあるのでしょうか?
また、スタティックコントロールの親ウインドウ側でWM_CTLCOLORを処理する方法
があったら、教えていただけるとありがたいです。
(メッセージループとかないですよね?)
よろしくお願いします。
>何か足りないものがあるのでしょうか?
足りないも何も、メタメタです。。。
WM_PAINT メッセージのリファレンスを確認してください。
wParam は WM_PAINT では未使用です。
>また、スタティックコントロールの親ウインドウ側でWM_CTLCOLORを処理する方法
>があったら、教えていただけるとありがたいです。
WM_PAINT メッセージの処理を(正しく)追加するのと、根本的には何ら変わりはありま
せん。
出鱈目にメンバ関数を追加したところで、それが使われることはありません。
ATL の CWindow クラスを使っているなら、ヘルプの
[ATL ウィンドウ クラス] - [ウィンドウのインプリメント]
というトピックで、「CWindow クラスによる Windows メッセージの処理法方」が解説さ
れているので、それを参考にしてください。