マウスポインター有無の判定方法

解決


かわにー  2002-07-19 21:10:08  No: 1129  IP: [192.*.*.*]

質問してばかりで申し訳ありません。
Panelやimageの上にマウスポインターがあるかないかの判定を
行いたいのですが方法がわかりません。
ある場合は、mouse_moveイベントで監視すればよいかと思うのですが
なかった場合に処理を行いたい時はどうすればよいのでしょうか?
(そのimageより外に出た瞬間をキャッチできればよい)
スクリーン全体に対するマウスポインターの位置とフォーム上のimage
コントロールの位置関係を考えて処理するしかないのでしょうか?
よろしくお願いします。

編集    削除
たかみちえ  URL  2002-07-19 21:52:45  No: 1130  IP: [192.*.*.*]

全てのコントロール(かどうかは分からないですけど…)には、
裏でCM_MOUSELEAVEというメッセージがきます。
マウスが離れたことを示すメッセージで、ラベルのOnMouse...と同じです。
(CM_MOUSEENTERもあります)
  詳しくはココ
http://www2.big.or.jp/~osamu/Delphi/Tips/key.cgi?key=25

  これでマウスが出たかどうか分かります。
  ただ、パネルの中のメッセージを取得するのは意外と面倒なので、
やることが多いのならいっそコンポーネントにでも…。


  マウスが出た後にも、操作を行いたいのなら、mouse変数(ヘルプ参照)と、
Timerコンポーネントをうまくくみ合わせます。
  もうひとつ。APIにSetCaptureというのもあります。
これは、つぎにReleaceCaptureを使うまで、マウスイベントを全部、
指定したコントロールのなかでのみ発生させるAPIです。
まあ、他のアプリケーションとで問題を起こすこともありますけど…。

  とにかく、これらの方法が使えると思います。

編集    削除
かわにー  2002-07-20 00:29:30  No: 1131  IP: [192.*.*.*]

たかみちえさん、早い回答ありがとうございます。
助かりました!!

編集    削除