アプリ版:「スタンプのみでお礼する」機能のリリースについて

DirectInputでマウス座標を取得したいのですが、
lX lY
による移動量の取得方法しかわからず、
初回起動時に下のコードで現在座標を取得して扱っているのですが、
-----------------------------------
GetCursorPos(&point);
ScreenToClient(hWnd, &point);
input_mpos[0] = float(point.x);
input_mpos[1] = float(point.y);
-----------------------------------
問題点
1.クライアント領域を抜け、モニターの隅までマウスカーソルが行っても移動量が加算され続け狂ってしまう
2.タイトルバーをダブルクリックして擬似フルスクリーンにすると移動量そのものが通用しない
3.フォーカスが飛んだり、ダイアログボックスが出ると現在座標が狂ってしまう

に悩まされています。
常に確実にクライアント内の座標を捕らえ続けられる計算式というか、
定番の手順というものが有ったりするのでしょうか?
それとも、マウス座標はDirectXで取得しようとする事そのものが間違いだったりするのでしょうか?

経験者様いらっしゃいましたら、ヒント程度でも構いませんので教えて頂けると幸いです。 orz

A 回答 (1件)

どうも、素人PGの者です。



早速自分のライブラリを見てみた所、質問者さんと同じような
問題に昔の自分が苦しんでいました。
結論から言うとマウス座標に関しては、毎フレームGetCursorPosで取得しています。
そして/*DirectInputでは移動量しか取れないようなので、こうする*/とコメントが入っていました。
今の所、これで別段気になる程遅延はありませんし、えらく重くなったということも無いので、
素直にGetCursorPosで良いのではないでしょうか?
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。
そうなのですね・・今の所は毎フレームGetCursorPosを呼び出してみようと思います。


もう数日だけ
『 DirectInputを使ってマウス座標を取得 or 計算する方法 』
をご存知の方がいらっしゃらないか、
締切らずに待たせて頂こうと思います。

ご回答、ありがとうございましたっ

お礼日時:2009/04/03 14:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!