掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ポップアップメニューの外でマウスアップでポップアップメニューを消すには? (ID:31700)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
真琴:「MouseDownでPopupMenuを出した時は MouseUpイベントが起きないの?」 春子:「そうね、だから MouseUpイベントで消せないというコトかな?」 真琴:「ハルコさん、じゃぁ、MouseHookしたらウマクいくンじゃない?」 春子:「まぁ、その手もあるけど…、それでやってみたら? マコト」 真琴:「それなら…こんなカンジでどうかなぁ?」 var HookHandle: HHOOK; function MouseHook(Code: Integer; WParam: WPARAM; LParam: LPARAM): LRESULT; stdcall; begin if (Code >= 0)and(Code = HC_ACTION) then begin if {(WParam = WM_LBUTTONUP)or}(WParam = WM_RBUTTONUP) then begin if HookHandle <> 0 then begin UnHookWindowsHookEx(HookHandle); HookHandle := 0; keybd_event(VK_ESCAPE, 0, 0, 0); keybd_event(VK_ESCAPE, 0, KEYEVENTF_KEYUP, 0); end; end; end; result := CallNextHookEx(HookHandle, Code, WParam, LParam); end; procedure TForm1.WmRButtonDown(var Msg: TMessage); var P: TPoint; begin inherited; if HookHandle = 0 then HookHandle := SetWindowsHookEx(WH_MOUSE, MouseHook, 0, GetCurrentThreadID); P := ClientToScreen(Point(Msg.LparamLo, Msg.LparamHi)); PopupMenu1.Popup(P.X, P.Y); end; 真琴:「うん、OK、RButtonDownでPopupして、外でのMouseUpでメニューが消えるヨ」 春子:「マコト、忘れてる、これだけじゃぁメニュー項目を選択しても無効になっちゃうでしょ?」 真琴:「あっ、そっか、MouseUpした場所の判定を忘れてた^^;」 春子:「そうよ、それがなくちゃね、…話違うけど、あれも忘れてるよ」 真琴:「え? ナンだっけ…」 春子:「もう一度バンの整備してってマサルさんに念を押さなきゃ、エンストしないように」 真琴:「でも、アタシにはドコが悪いか分からないし、やっぱり途中で止まると思うけど^^;」 春子:「それでも行くの? ディズニーランドへ」 真琴:「クルマを押すのも夏のイイ思い出になるよ」 春子:「アタシはそんな思い出はお断り、ユウコちゃんだってそうよ」 真琴:「だから、このコトはユウコには内緒、言わないでネ? ハルコさん」 春子:「言わないけど、アタシはゼッタイ行かないからね」 真琴:「でも、結局ハルコさんも一緒に行くコトになるンだから^^;」
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.