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

Technical Q&A QA1210
What is the minimal set of Carbon Events I need to override in order to implement a simple custom push button?


Q: 単純なカスタムプッシュボタンを実装するためにオーバーライドする必要のある最小限の Carbon イベントは何ですか?

A: 単純なカスタムプッシュボタンを実装するためにオーバーライドする必要があるのは、kEventControlHitTestkEventControlHiliteChanged、および kEventControlDraw の 3 つの Carbon イベントだけです。

kEventControlHitTest をオーバーライドしなければならないのは、パラメタとして渡されたポイントがコントロールのアクティブな部分にあることを確認できるようにするためです。

注意:皆さんの想像や、名前が示唆していること (HitTest) とは裏腹に、ボタンが押されていない時でさえ、このメッセージが送信されることがあります。単にクリックを受け取ったと想定しないでください。Control Manager は、あるポイントがコントロールの一部にあるかどうかを確認するように尋ねているだけです。

kEventControlHiliteChanged イベントは、コントロールにおいて HiliteControl API が呼び出されるたびに受け取ります。このイベントは、HIViewClickHandleControlClickTrackControl などの各種のマウストラッキング API の間で暗黙のうちに発生することがあります。たいていの場合、再描画を要求することによって対処するだけでよいでしょう。

kEventControlDraw の場合は、その状態や値などに応じて、コントロール(またはコントロールの一部)を描画する必要があります。

HICustomPushButton サンプルコードで、この処理の完全な実装を確認できます。


[2002 年 11 月 12 日]