HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
1217
てる坊WM_KEYUPのフラグの取得3解決


てる坊

リンク

2018/12/17(Mon) 16:50:19|NO.86027

WM_KEYUPのlParamには32ビットの中に様々な情報が格納されています。
WM_KEYDOWNと区別するため、そのうちの32ビット目(31?)のフラグを取り出したいんですが
色々ビット演算を試したのですがうまくいきません。
どなたか取得方法をご教授ください。



この記事に返信する


いののて

リンク

2018/12/17(Mon) 17:51:21|NO.86028

負の整数のときは最上位ビットが1になることを利用してみるのはどうでしょうか。



MillkeyStars

リンク

2018/12/17(Mon) 18:24:15|NO.86029


//2進数で考えて。 1 2 4 8 16 32 64・・・・ 0 1 2 3 4 5 6・・・
a = 0xFFFFFFFF
上記 a の場合、32bit すべてのフラグが立っている場合で、31ビット目を取り出したい場合
b = 0b10000000000000000000000000000000 (0x80000000)
と b の 31ビット目にフラグを立て
c = a & b (a から b の一部を取り出す and演算)
とすると、31ビット目を取り出すことができます。



てる坊

リンク

2018/12/17(Mon) 18:30:50|NO.86031

いののてさん、MillkeyStarsさん、早速ありがとうございました。

(lParam >> 31) & 1
で取得できました。
取得できなかった原因は、WM_KEYUPの0x101を間違ってWM_KEYDOWNの0x100と
記述していたためでした。
ケアレスミスでお騒がしてすみませんでした。m(__)m



ONION software Copyright 1997-2021(c) All rights reserved.