ページ 11

ウインドウ上のカーソル座標

Posted: 2006年12月27日(水) 00:50
by よしき
GetCursorPosでスクリーン座標は手に入るのですが、hMainWnd上での座標を手に入れることはできないのでしょうか?

もしやウインドウの座標を求めてそこから計算とかになるんですか…?

Posted: 2006年12月27日(水) 01:13
by OverTaker
マウスが動いた時のイベントで取得される座標を、変数に保存しておく、というのでは駄目でしょうか?
http://www.activebasic.com/help_center/ ... seMove.htm

Posted: 2006年12月27日(水) 01:35
by よしき
思いつきもしませんでした。
すばらしいアイディアありがとうございます。

Posted: 2006年12月27日(水) 01:43
by 高信期
ScreenToClient関数を使う手もあります。

コード: 全て選択

Dim CursorPos As POINTAPI
GetCursorPos(CursorPos)
ScreenToClient(hMainWnd, CursorPos)

Posted: 2006年12月27日(水) 23:40
by よしき
こんな便利なものがあったとは・・・。
OverTakerさんのアイデアより多少処理がかるくなりそうですね。
ありがとうございます。

横からすみません

Posted: 2008年6月01日(日) 07:26
by トモカズ
便乗質問になってしまいます。申しわけありません。
高信期さんの手法はN88BASICモードで使用することは可能なのでしょうか?
もし可能であればやり方をご教授いただけないでしょうか?
コンパイル時に「MOUSE.abp(4) - "hMainWnd" 無効な識別子です」のエラーとなってしまいます。

よろしくお願いいたします。

Posted: 2008年6月01日(日) 11:04
by konisi
一応可能です。
AB4系だと、プロンプトのウインドウハンドルは_PromptSys_hWndに入ってます。

自己レスです(連続投稿申しわけありません)

Posted: 2008年6月01日(日) 12:44
by トモカズ
以下のコードにて解決しました。
スレ汚しになってしまい申し訳ありませんでした。

#N88BASIC
Dim CursorPos As POINTAPI
Dim MX%,MY%

*LOOP1
GetCursorPos(CursorPos)
ScreenToClient(_PromptSys_hWnd, CursorPos)
MX%=CursorPos.x
MY%=CursorPos.y
LOCATE 0,0:PRINT MX%;MY%
GOTO *LOOP1

Posted: 2008年6月01日(日) 12:48
by トモカズ
konisiさん、上の返信に気がつきかず自己レスと書いてしまいました。お礼が書けず失礼いたしました。
何度もご丁寧にありがとうございます。