form内の指定場所にマウスを表示

解決


VB超初心者  2004-02-23 16:50:58  No: 82201  IP: [192.*.*.*]

form内の指定した位置にマウスを表示させたいのですが、SetCursorPos関数を使用した場合、スクリーン座標での表示となってしまいます。form内の座標については取得済みなのですが、何か良い方法はないでしょうか?
※私の勘違いがあれば、申し訳ありません

編集 削除
nanashi  2004-02-23 17:44:56  No: 82202  IP: [192.*.*.*]

すでに取得してあるフォーム内の座標に、フォームの座標を足せば良いと思います。
正確にはGetSystemMetricsとか使ってウィンドウ枠の幅とかも取らなきゃならないですけど。

編集 削除
マフユ  2004-02-23 17:58:15  No: 82203  IP: [192.*.*.*]

下記が参考になりませんか。

http://www.bcap.co.jp/hanafusa/
   イベントプロシージャ関係
        マウス位置の設定と取得

編集 削除
VB超初心者  2004-02-23 18:14:17  No: 82204  IP: [192.*.*.*]

nanashi様、マフユ様  ありがとうございます。

申し訳ありませんformのLeftとTopの座標を取得する関数を
見つけることができません。

"イベントプロシージャ関係  マウス位置の設定と取得"も
見させていただきましたが、いまひとつ理解できませんで
した。申し訳ありません。

編集 削除
nanashi  2004-02-23 18:20:01  No: 82205  IP: [192.*.*.*]

フォームのLeft及びTopプロパティで取得できますが。

編集 削除
VB超初心者  2004-02-23 19:20:37  No: 82206  IP: [192.*.*.*]

nanashi様
ありがとうございます。

たとえば
form1のX座標がWid_Pos
form1のY座標がWid_Pos
とした場合、

Dim Ret As Long
Ret = SetCursorPos(Form1.Left + Wid_Pos, Form1.Top + Wid_Pos)

となるのでしょうか?

編集 削除
nanashi  2004-02-24 10:24:45  No: 82207  IP: [192.*.*.*]

試せば分かるようなことをイチイチ質問されるのもねェ……。

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とかで取らないとフォーム上の正確な座標を指すことは出来ません。

編集 削除
VB超初心者  2004-02-25 11:11:09  No: 82208  IP: [192.*.*.*]

nanashi 様
本当に申し訳ありませんでした。
GetSystemMetricsについても勉強になりました。
無事解決でき誠にありがとうございました。

編集 削除