游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2905|回复: 3

为什么键盘按下时产生的是0X80呀?

[复制链接]

13

主题

25

帖子

27

积分

注册会员

Rank: 2

积分
27
发表于 2005-4-28 09:17:00 | 显示全部楼层 |阅读模式
读取键盘信息时可以是这样的代码:
.....
LPDirectInputDevice8 lpdikey = NULL;
char keystate[256];
.....
lpdikey->GetDeviceState(sizeof(keystate),keystate);
if(keystate[DIK_ESCAPE])
  PostMessage(hwnd,WM_CLOSE,0,0);
.....

但是我看一本书上是这样封装的:
#define DIKEYDOWN(data,n) (data[n] & 0x80)

我看了一下keystate[DIK_ESCAPE]的值就是0X80

为什么keystate[DIK_ESCAPE]会等于0X80呢?即使等于0X80为什么还要与0X80再做"&"运算呢?

请帮小弟解决一下....谢谢了....

0

主题

30

帖子

30

积分

注册会员

Rank: 2

积分
30
QQ
发表于 2005-4-28 13:44:00 | 显示全部楼层

Re:为什么键盘按下时产生的是0X80呀?

当该键被按下时,就把数据相应字节的最高位设为1,所以要与0x80相与。

1

主题

69

帖子

69

积分

注册会员

Rank: 2

积分
69
发表于 2005-4-29 13:11:00 | 显示全部楼层

Re:为什么键盘按下时产生的是0X80呀?

0x80可用来判断键是被按下还是弹起

5

主题

263

帖子

1113

积分

金牌会员

Rank: 6Rank: 6

积分
1113
发表于 2010-9-27 21:06:00 | 显示全部楼层

Re:为什么键盘按下时产生的是0X80呀?

是不是如果按下键盘的某个键,它就做's' & 0x80 运算?(当然,那个's'是我随意取的)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-5 00:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表