関数GetKeyState()は、キーの状態(上位ビットで上/下、下位ビットで切り替え)を含むSHORTを返します。これらの値を取得するにはどうすればよいですか?
19627 次
7 に答える
13
単純なビット操作が機能します。SHORT は 16 ビットの整数であるため、下位ビットと上位ビットを取得するには、次のようにします。
lowBit = value & 1;
highBit = ((unsigned short) value) >> 15;
また、LOBYTE および HIBYTE マクロは、バイト内の個々のビットをテストするためではなく、 SHORT を下位バイトと上位バイトに分割するために使用されることに注意してください。
于 2011-03-14T18:10:35.280 に答える
11
これは、GetKeyState() の戻り値を使用する方法ではありません。代わりに次のようにします。
SHORT state = GetKeyState(VK_INSERT);
bool down = state < 0;
bool toggle = (state & 1) != 0;
于 2011-03-14T18:16:05.987 に答える
4
GetKeyState
orの結果をチェックする通常の方法GetAsyncKeyState
は、ビット単位の and with 0x8000
(binary 1000 0000 0000 0000
) です。
#define IS_DOWN( GetKeyState(x) & 0x8000 )
if( IS_DOWN( VK_ESCAPE ) ) // escape is down.
于 2012-12-26T03:36:30.977 に答える
2
#define LOBYTE(a) ((CHAR)(a))
#define HIBYTE(a) ((CHAR)(((WORD)(a) >> 8) & 0xFF))
于 2011-03-14T18:06:41.390 に答える
1
WORD == SHORT、HIWORDはDWORDで動作し、HIBYTEはSHORT/WORDで動作します。
于 2011-03-14T18:17:26.197 に答える