中易网

C语言bioskey()函数问题

答案:2  悬赏:0  
解决时间 2021-03-06 23:52
C语言bioskey()函数问题
最佳答案
那我怎么能取出低8位的ascii的值?

答:short a = bioskey(cmd);//要获取普通键时,cmd的值设置为0;即:short a = bioskey(0);
       int low = a &0xff; //低八位放在了low里了
       int high = a >>8; //高八为放在了high里了
short a = bioskey(2);
 int low = a &0xff; //第八位放在了low里了
        当cmd是2,bioskey()返回Shift、Ctrl、Alt、ScrollLock、NumLock、CapsLock、Insert键的状态。各键状态存放在返回值的低8位字节中。
        字节位 含义
        0 右边Shift键状态
        1 左边Shift键状态
        2 Ctrl键状态
        3 Alt键状态
        4 ScrollLock键状态
        5 NumLock键状态
        6 CapsLock键状态
        7 Insert键状态
        字节位为1表示该键被按下,为0表示松开。
       
不是说低八位吗?也就是0-7这八位。如只按下了Ctrl键,就是:[高位] 00000100 [地位]; 也就是low = 4;
加入按下Ctrl键的同时,也按下了Alt键,就是:[高位] 00001100 [地位]; 也就是low = 12;
追答
追问:你意思是当cmd等于2时
按右边shift键高8位为0低8位为1 00000001
按lnsert键高8位为0低8位为128 10000000
是吗?
追答:是的,你测试一下
追问:好像不行!你试试看...
追答://我这里没有安装TC,你测试一下下面的那个程序
//示例程序:



#include 
#include 
#include 
#include 


#include 
#include 


#define RIGHT 0x01
#define LEFT 0x02
#define CTRL 0x04
#define ALT 0x08


int main(void)
{
    int key, modifiers;
    
    while (bioskey(1) == 0)
        ;
    
    key = bioskey(0);
    
    modifiers = bioskey(2);
    if (modifiers)
    {
        printf("[");
        if (modifiers & RIGHT)
            printf("RIGHT");
        if (modifiers & LEFT)
            printf("LEFT");
        if (modifiers & CTRL)
            printf("CTRL");
        if (modifiers & ALT)
            printf("ALT");
        printf("]");
    }
    
    if (isalnum(key)) 
        printf("'%c'
", key);
    else
        printf("%#02x
", key);


        getch();
    return 0;
}

//注:bioskey是TC编译环境下的函数,VC中无法使用。


追问:还是不行!不过谢谢你了!剩下的自己来...
全部回答
unsigned char low8bit = return_value & 0xff;
追问:那cmd等于2是是不是一样通过&取出低8位的值!如果值是1就是shift值为128是lnsert
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
李姐海鲜私房菜这个地址在什么地方,我要处理
妖精尾巴的官配有谁,要图
听说生吃苦瓜可以减肥,而且怎么吃都不胖,有
已知平面a、b相交,a、b内各取两点,这四点都不
明天后天是否适合搬家
人民北路/人民中路12号里(路口)在什么地方啊
现在的足疗店和洗浴中心用的毛巾和袜子送货上
我想替一个女孩挨板子
汽车最多可以用多少年
梦见海里打捞行李箱
万象ol网吧管理平台怎么修改减钱
为什么我的同学朋友不和我去比较远的地方旅游
生辰查五行缺什么,怎没取名?
2009年买的上海大众polo两厢跑了4万公里二手
如果已经分手很久的前男友成功后找你复合你怎
推荐资讯
小米怎么爆米花
去台湾旅游可不可以带水果去
关于泡沫的句子
梦幻西游照顾召唤兽花钱吗?花费体力吗?
/pai-3.14/=
分期付款全保大货车,发生交通事故有人寿份,
20几岁的女孩子的人生目标是不是找个男人嫁了
我想养灯鱼 高手进、
社保费是什么
2017年2月福师大学英语闭卷考试的答案
尼桑风神蓝鸟空调打不开怎么修复
赵本山演的那个捐款的小品叫什么?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?