高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1125
Why isn't my Static Text Control deactivating when my other controls are?


Q: ほかのコントロールが非アクティブになっているときに、静的テキストコントロールだけが非アクティブにならないのはなぜでしょうか?

A: ウィンドウが非アクティブのとき実際には、静的テキストコントロール(kControlStaticTextProc = 288)は、他のコントロールと同様に非アクティブになっています。

アプリケーションとの互換性の理由から、ほかのコントロールは適切なぼかし(グレー)表示になるのに対し、静的テキストコントロールは黒く表示されたままになります。この動作は、テーマウィンドウの背景ブラシがウィンドウに適用されなかったときにのみ発生します。したがって、自明の回避方法は、テーマウィンドウの背景ブラシ(現在は Dialog ブラシ、Alert ブラシ、および ModelessDialog ブラシだけでこの問題を解決しています)をウィンドウにセットすることです。これにより、静的テキストコントロールは、非アクティブにされたときにぼかし表示(グレー表示)になります。

自分のアプリケーションにおいて、テーマウィンドウの背景ブラシが設定できない、あるいは設定したくないため、前述の回避方法を使えない場合は、 SetControlColorProc を使って、静的テキストコントロールに対し ControlColorProc を設定できます。ControlColorProc において、kControlMsgApplyTextColor メッセージを監視し、コントロールの状態とウィンドウの状態に対応する適切なテキスト色を設定します。SetThemeTextColor を使い、コントロールがアクティブか非アクティブかによって、kThemeTextColorDialogActive または kThemeTextColorDialogInactive を渡すこともできます。


[2002 年 3 月 11 日]