为什么WM_CHAR没有区分大小写 看MSDN上说WM_CHAR返回的是wParam = TCHAR,但是我发现在 大写锁定 的状态下始终返回大写,为什么呢?有什么消息是直接能返回区分大小写的ASCII呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 大写状态返回大写 这是很合理的!!!想要区分 可以在wm_char检测caps lock按键状态 然后自己判断 我的键盘没问题 ,但是我调试过真的是这样我就直接看 wParam 的值,无论Caps Lock什么状态都是返回65(A) if (GetKeyState(VK_CAPITAL) &0x80) 这个KEY的定义就是大写吧.LRESULT CALLBACK LowLevelKeyboardProc(_In_ int nCode,_In_ WPARAM wParam,_In_ LPARAM lParam){ if (nCode == HC_ACTION) { KBDLLHOOKSTRUCT *pKBHook=(KBDLLHOOKSTRUCT *)lParam; if(wParam == WM_KEYUP || wParam == WM_SYSKEYUP) { switch (pKBHook->vkCode ) { case 'D': {这个里面,你把Case 'D'改成 case 'd' 试下呢.winuser.h 注释得很清楚,另外小写的ASCII应该在0x61这后面吧./* * VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39) * 0x40 : unassigned * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A) */那么0x61以后的定义如下.#define VK_NUMPAD1 0x61#define VK_NUMPAD2 0x62#define VK_NUMPAD3 0x63#define VK_NUMPAD4 0x64#define VK_NUMPAD5 0x65#define VK_NUMPAD6 0x66#define VK_NUMPAD7 0x67#define VK_NUMPAD8 0x68#define VK_NUMPAD9 0x69#define VK_MULTIPLY 0x6A#define VK_ADD 0x6B#define VK_SEPARATOR 0x6C#define VK_SUBTRACT 0x6D#define VK_DECIMAL 0x6E#define VK_DIVIDE 0x6F 无论Caps Lock什么状态都是返回65(A) 我不太明白你的意思,我说的61是10进制的.但是我想问的是,为什么Caps Lock什么状态都是返回65(A) 其实问题就归结为判断Caps Lock是什么状态if (GetKeyState(VK_CAPITAL) & 0x0001){ //Caps Lock 为on状态} 如何自己做QQ客户/服务器端 vc调用web浏览器组件编程出现的问题 请教几个警告的问题? 请问关于ActiveX控件的两个问题 请高手帮我看看,解析一个XML文件 图形打印,在OnPrint函数中调用类似OnDraw函数,却不能放大 想问个关于MFC的问题 怎样将网卡设为混乱模式?(win2k中)谢谢 小问题~~~~~~~~~~~~~~~~~~ 基于对话的程序:引用MSFLEXGRID的困惑! 图像处理方面的像素灰度级压缩的问题。 vector包含的问题
我就直接看 wParam 的值,无论Caps Lock什么状态都是返回65(A)
if (GetKeyState(VK_CAPITAL) &0x80)
{
if (nCode == HC_ACTION)
{
KBDLLHOOKSTRUCT *pKBHook=(KBDLLHOOKSTRUCT *)lParam;
if(wParam == WM_KEYUP || wParam == WM_SYSKEYUP)
{
switch (pKBHook->vkCode )
{
case 'D':
{这个里面,你把Case 'D'改成 case 'd' 试下呢.
winuser.h 注释得很清楚,另外小写的ASCII应该在0x61这后面吧.
/*
* VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
* 0x40 : unassigned
* VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
*/
那么0x61以后的定义如下.#define VK_NUMPAD1 0x61
#define VK_NUMPAD2 0x62
#define VK_NUMPAD3 0x63
#define VK_NUMPAD4 0x64
#define VK_NUMPAD5 0x65
#define VK_NUMPAD6 0x66
#define VK_NUMPAD7 0x67
#define VK_NUMPAD8 0x68
#define VK_NUMPAD9 0x69
#define VK_MULTIPLY 0x6A
#define VK_ADD 0x6B
#define VK_SEPARATOR 0x6C
#define VK_SUBTRACT 0x6D
#define VK_DECIMAL 0x6E
#define VK_DIVIDE 0x6F
{
//Caps Lock 为on状态
}