マウスの移動認識

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
syorokuirai

マウスの移動認識

#1

投稿記事 by syorokuirai » 14年前

はじめまして
初心者質問ですがよろしければ回答いただきたいです

いきなり本題に入り、申し訳ないです
DXライブラリでマウスポインタの座標を取得し、ゲームに利用することは出来ますが
プレイヤーがマウスをどう動かしたのかという情報を得ることは出来ないでしょうか
つまり、マウスポインタではなく、マウスがどういう命令を出したのかということが知りたいのです

DXライブラリのサイトに載っているマウスポインタの座標を得る関数を使用しようかと思うと
マウスポインタが画面最上部まで移動してしまった場合、ポインタはもう上方向に移動することが
できませんから、ユーザーがマウスをどう動かしたのかという情報は得られません

DXライブラリが使えないのであれば小6以来にjavaの勉強でもしてみようかとも思っています
(javaにもそんな関数なかったら駄目なんですが)


よろしければ、ご回答よろしくお願いします

syorokuirai

Re: マウスの移動認識

#2

投稿記事 by syorokuirai » 14年前

今、思ったんですが
マウスポインタの座標がちょっとでも動いたら、画面の中央にポインタを移動させる
プログラムにしてみたら、できないでしょうか?
あ、でもマウスポインタの座標を指定させて移動させる方法を知りませんでした


もう一つ質問したいのですが、java、C言語それぞれに
ポインタの座標を操作する関数はありますか?

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: マウスの移動認識

#3

投稿記事 by h2so5 » 14年前

syorokuirai さんが書きました: DXライブラリでマウスポインタの座標を取得し、ゲームに利用することは出来ますが
プレイヤーがマウスをどう動かしたのかという情報を得ることは出来ないでしょうか
つまり、マウスポインタではなく、マウスがどういう命令を出したのかということが知りたいのです
一定時間ごとにマウス座標を記録していけば、どのように動かしたのか知ることができます。
syorokuirai さんが書きました: もう一つ質問したいのですが、java、C言語それぞれに
ポインタの座標を操作する関数はありますか?
ありません。
マウスポインタを操作する関数はDXライブラリの機能(Win32APIの機能)であり、
C言語の機能ではありません。Javaについても同じことが言えます。

アバター
nullptr
記事: 239
登録日時: 14年前

Re: マウスの移動認識

#4

投稿記事 by nullptr » 14年前

補足的になりますがDXライブラリを使う場合はウィンドウプロージャを操作できませんのでオンクリックやアウトクリックを使う場合はDXライブラリの関数を利用して自身で実装するしか無いと思います。
 
 
✜ で C ご ✜
: す + 注 :
¦ か + 文 ¦
?
Is the は :
order C++? ✜
     糸冬   
  ――――――――
  制作・著作 NHK
 
 

syorokuirai

Re: マウスの移動認識

#5

投稿記事 by syorokuirai » 14年前

>>新月さん
すいません まだまだ初心者なので外来語がよめませんでした
h2so5 さんが書きました:一定時間ごとにマウス座標を記録していけば、どのように動かしたのか知ることができます。
それだと、マウスポインタが画面の最上部まで言ってしまった場合、
ポインタがそれ以上、上にいくことが出来なくなってしまいます
そうなると、プレイヤーが上方向に命令を出したか否かが分からなくなってしまいます
と思うのですが  どうでしょうか
h2so5 さんが書きました: ありません。
マウスポインタを操作する関数はDXライブラリの機能(Win32APIの機能)であり、
C言語の機能ではありません。Javaについても同じことが言えます。
javaを使うにしてもwinAPIのおぞましいプログラムを覚えなくてはいけないのですか・・・
今は触らないでおくことにしました

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: マウスの移動認識

#6

投稿記事 by h2so5 » 14年前

画面の中央にポインタを戻しながら移動量を計測するのが簡単だと思います。
マウスポインタの座標を移動させる関数はDXライブラリのリファレンスに載っていますので、そちらを参照してください。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: マウスの移動認識

#7

投稿記事 by softya(ソフト屋) » 14年前

DXにおいてはマウスは、SetMousePoint()で常に中央にすることは出来ますが、かなり不便になるのでやらないほうが良いのではないでしょうか?

SetHookWinProcとかウィンドウメッセージを監視するほうが良いと思います。つまりwin32APIです。
下記のような方法でもメッセージは監視できるようです。
「DXライブラリのウィンドウ関係で • C言語交流フォーラム ~ mixC++ ~」
http://dixq.net/forum/viewtopic.php?t=10206&p=82281

あと、Javaで直にWin32APIを扱うことはありません。マウス用のライブラリがあります。
「とほほのJava入門 マウスモーションリスナー(MouseMotionListener)」
http://www.tohoho-web.com/java/listener ... onListener
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
h2so5
副管理人
記事: 2212
登録日時: 15年前
住所: 東京
連絡を取る:

Re: マウスの移動認識

#8

投稿記事 by h2so5 » 14年前

Win32APIはあまり詳しくないですが、OSレベルのAPIではマウスの現在位置しか提供されていないようなので、
マウスポインタが画面の最上部まで行ってしまった場合でもマウスの物理的な移動量を求めるには
マウスのドライバに直接アクセスでもしないと無理じゃないでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: マウスの移動認識

#9

投稿記事 by softya(ソフト屋) » 14年前

h2so5 さんが書きました:Win32APIはあまり詳しくないですが、OSレベルのAPIではマウスの現在位置しか提供されていないようなので、
マウスポインタが画面の最上部まで行ってしまった場合でもマウスの物理的な移動量を求めるには
マウスのドライバに直接アクセスでもしないと無理じゃないでしょうか。
失礼、画面上部とはデスクトップ画面上部の事ですね。
ウィンドウ上部だと思ってました。
だとすると画面中の中央に戻すぐらいしか無いですね。調べてみます。

[補足]
これはJavaでも同じですね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: マウスの移動認識

#10

投稿記事 by softya(ソフト屋) » 14年前

DOS時代と違い方法が無いみたいなので常に中央に戻すしかなさそうです。
ただ、何かのボタンで解除できるようにしておかないと不便でしょうね。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

syourokuirai

Re: マウスの移動認識

#11

投稿記事 by syourokuirai » 14年前

ありがとうございました
とりあえず簡単そうなのでDXライブラリの標準関数を使い
ループごとにマウスカーソルを中心に強制移動させることにします

閉鎖

“C言語何でも質問掲示板” へ戻る