- PR -

ビット演算

1
投稿者投稿内容
ダッチ
大ベテラン
会議室デビュー日: 2005/10/31
投稿数: 113
投稿日時: 2005-10-31 21:23
初めまして。ダッチと申します。
VB.NET2003にてフォームのWndProcをオーバーライドし
マウスのアップ・ダウン情報を取得しようとしております。
マウスのアップ・ダウンした際のメッセージは取得できるのですが、
その際のマウスの座標が上手く取得できません。
lParamの上位ビットにX座標
下位ビットにY座標があるのまでは分かったのですが、
どのようにして取り出したらいいのか分かりません。
よろしくお願いいたします。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-10-31 21:47
And演算子とビットシフト演算子(>>)を組み合わせていけるんじゃないでしょうか。
ダッチ
大ベテラン
会議室デビュー日: 2005/10/31
投稿数: 113
投稿日時: 2005-10-31 21:51
一郎さん回答ありがとうございます。

下記コードよりx座標とy座標が取得できました。
Dim x As Integer = (m.LParam.ToInt32 And &HFFFF)
Dim y As Integer = (m.LParam.ToInt32 >> 16)

VB.NET2003で">>"が使えるとは知りませんでした。
無事解決できました。ありがとうございました。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-10-31 21:52
Form.MouseDown イベント じゃダメなんだっけ?

あ、もちろん、上にあるコントロールが優先するけど。
_________________
ダッチ
大ベテラン
会議室デビュー日: 2005/10/31
投稿数: 113
投稿日時: 2005-10-31 22:13
マウスジェスチャをやろうと思い
フォームのWndProcをオーバーライドするやり方を取りました。

今気づいたのですが、
フォームの上にコントロールがあるとそのコントロールでマウスダウンをしても
フォームのWndProcにマウスダウンメッセージが来ないことが分かりました。

フォームの上にコントロールがあってもフォームの上ならばWndProcにメッセージが来るものだと思い込んでいました。

やり方を考え直したいと思います。
1

スキルアップ/キャリアアップ(JOB@IT)