HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
0208
プリ〜ンマウスカーソルの場所4解決


プリ〜ン

リンク

2007/2/8(Thu) 06:34:36|NO.5512

はじめまして!!

たとえばウィンドウ二つ(ID0とID1)を表示しておいて、
マウスカーソルがID1のクライアント領域上にあるかどうかを
調べるにはどうしたらいいでしょうか?



この記事に返信する


Irisawa

リンク

2007/2/8(Thu) 11:02:27|NO.5514

こんな感じでどうでしょうか。


#const WM_SETCURSOR 0x20 screen 0 oncmd *OnSetCursor, WM_SETCURSOR screen 1 oncmd *OnSetCursor, WM_SETCURSOR stop *OnSetCursor if ginfo(2) ! ginfo(24) { gsel ginfo(24), 1 } title "Window ID: " + ginfo(24) + " / Window Handle: " + wparam stop

ginfo(24)でメッセージ割り込みの発生したWindow IDが取得できます。
また、取得したいウィンドウのみメッセージ割り込みすればワザワザ判定する必要は
ありません。



プリ〜ン

リンク

2007/2/11(Sun) 21:46:48|NO.5599

Irisawaさん、返答ありがとうございます!!

提示していただいたスクリプトではタイトルバーの上でも反応してしまいますよね?
タイトルバーやウィンドウの枠を含まない、クライアントエリアの上だけを判定したいのですが、
どうすればいいでしょう・・・?



Irisawa

リンク

2007/2/11(Sun) 23:25:35|NO.5600

WM_MOUSEMOVE(0x200)メッセージを捕まえればいいと思います。

http://www.winapi-database.com/Message/WM/WM_MOUSEMOVE.html


#const WM_MOUSEMOVE 0x200 screen 0 oncmd *OnMouseMove, WM_MOUSEMOVE screen 1 oncmd *OnMouseMove, WM_MOUSEMOVE stop *OnMouseMove if ginfo(2) ! ginfo(24) { gsel ginfo(24), 1 } title "Window ID: " + ginfo(2) + " / Window Handle: " + hwnd stop

他にも、WindowFromPointで特定のウィンドウの下にあるウィンドウハンドルを取得したり
することができます。

http://www.winapi-database.com/Window/Change/WindowFromPoint.html



プリ〜ン

リンク

2007/2/11(Sun) 23:43:57|NO.5601

なるほど!!
思ってた感じにできそうです。
ありがとうございました!!



ONION software Copyright 1997-2023(c) All rights reserved.