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

解決


VB超初心者  2004-02-24 01:50:58  No: 82201

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


nanashi  2004-02-24 02:44:56  No: 82202

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


マフユ  2004-02-24 02:58:15  No: 82203

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

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


VB超初心者  2004-02-24 03:14:17  No: 82204

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

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

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


nanashi  2004-02-24 03:20:01  No: 82205

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


VB超初心者  2004-02-24 04:20:37  No: 82206

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 19:24:45  No: 82207

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

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 20:11:09  No: 82208

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加