掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
マウスイベントを取得するには? (ID:18418)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
これはどこのCanvasに描画しているのでしょう. それと,「他のアプリのFormにマウス...」とありますが,描画対象のcanvas の外側に行ったら,ということとは違うのですか? 図形を消したいというのは,ゲームとかなんかのかな. 例えば,Form1のcanvasに描画しているとして,Form1のサプクラス関数と いうものを利用する手もあります.以下,参考コードです. Form1の外側にでた時だけ,Form1の中に入った最初だけ動作するコードが 必要であればフラグ(変数)を利用したり,対象図形の有無で判断するとこ とも考えられます. procedure TForm1.FormCreate(Sender: TObject); begin //Form1のサブクラス化 OriginalProc:=Form1.WindowProc; Form1.WindowProc:=Form1SubClassProc; end; procedure TForm1.Form1SubClassProc(var Message: TMessage); var APoint : TPoint; begin //Form1の元のWindowProcを実行 OriginalProc(Message); case Message.Msg of WM_MOUSEMOVE: begin APoint.x:=Message.LParamLo; APoint.y:=Message.LParamHi; if PtInRect(Form1.ClientRect,APoint) then begin //マウスがForm1内にある //あるいは入った end else begin //マウスがForm1外にある //あるいは出た end; end; end; end; Form1の外側のマウス座標値が必要な場合は,マウスのフックが必要と思わ れます.う〜ん,MouseLeaveの方がいいのかな. 図形を消さない方針であれば,マウス移動している時はForm1の外側にマウ スを移動させないという考えもあるんでけどね.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.