| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3895 人关注过本帖
标题:C 语言求键盘任意键的 ASII 码 为什么在输入上下左右键的时候 会出现其他数 ...
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这代码看着都头大.C++的东西除了版主贴出来的那几页,其它的还真没看过.

程序代码:



MyConsole::KeyCode MyConsole::ReadKeypress(void)//两个MyConsole什么关系?  ::什么作用?
{
     wint_t key = _getwch();            //win_t是什么数据类型?
    if (key == 0x00E0)
     {
         key = (key << 2) + _getwch();
     }
     return (static_cast<KeyCode>(key));
 }


键盘的扫描码是自定义的还是MS系统下MS定义的?


1.MyConsole是我自定义的类(见那头文件)名称,由于类中定义的枚举、方法等均为静态,故用::指定属于该类。MyConsole::KeyCode表明KeyCode这个数据类型是MyConsole类中的,同理,ReadKeypress()函数也是MyConsole类中的。这段是该头文件的具体实现代码。平时我们看到的.h文件内容,只是定义和声明,但看不到实现代码,光有.h是没用的。

2.wint_t实际上就是unsigned short类型,即无符号16位整数,专用于表示双字节宽字符,比如中文。注意:C/C++标准中的int类型,其具体长度是根据机器和平台变化而变化的,不定长,但wint_t基本上是固定长的(在标准中它是介于char和int之间的宽度,对32位系统来说,就是16位)。

3.键盘扫描码是操作系统定的,不同的系统有不同的编码和译码体系,没有标准。我给出的头文件的价值,在于给你们提供了DOS/Windows下的键盘码表。价值在数据,不在代码。

[ 本帖最后由 TonyDeng 于 2014-8-1 03:24 编辑 ]

授人以渔,不授人以鱼。
2014-08-01 03:12
快速回复:C 语言求键盘任意键的 ASII 码 为什么在输入上下左右键的时候 会出现 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.046746 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved