form内の指定した位置にマウスを表示させたいのですが、SetCursorPos関数を使用した場合、スクリーン座標での表示となってしまいます。form内の座標については取得済みなのですが、何か良い方法はないでしょうか?
※私の勘違いがあれば、申し訳ありません
すでに取得してあるフォーム内の座標に、フォームの座標を足せば良いと思います。
正確にはGetSystemMetricsとか使ってウィンドウ枠の幅とかも取らなきゃならないですけど。
下記が参考になりませんか。
http://www.bcap.co.jp/hanafusa/
イベントプロシージャ関係
マウス位置の設定と取得
nanashi様、マフユ様 ありがとうございます。
申し訳ありませんformのLeftとTopの座標を取得する関数を
見つけることができません。
"イベントプロシージャ関係 マウス位置の設定と取得"も
見させていただきましたが、いまひとつ理解できませんで
した。申し訳ありません。
フォームのLeft及びTopプロパティで取得できますが。
編集 削除nanashi様
ありがとうございます。
たとえば
form1のX座標がWid_Pos
form1のY座標がWid_Pos
とした場合、
Dim Ret As Long
Ret = SetCursorPos(Form1.Left + Wid_Pos, Form1.Top + Wid_Pos)
となるのでしょうか?
試せば分かるようなことをイチイチ質問されるのもねェ……。
SetCursorPosに渡す座標はピクセル単位で渡す必要があるので
Dim lXPos&, lYPos As Long
lXPos = (Form1.Left + Wid_Pos) / Screen.TwipsPerPixelX
lYPos = (Form1.Top + Wid_Pos) / Screen.TwipsPerPixelY
Call SetCursorPos(lXPos, lYPos)
とします。
ただし、これはフォームの左上から座標なんでフォームの枠の幅、高さを
GetSystemMetricsとかで取らないとフォーム上の正確な座標を指すことは出来ません。
nanashi 様
本当に申し訳ありませんでした。
GetSystemMetricsについても勉強になりました。
無事解決でき誠にありがとうございました。