在下面代码中:
case WM_KEYDOWN: //按键按下时更新键盘缓冲
if((wParam >= 0) && (wParam <= 255)) //按键是否合法
{
window->keys[wParam] = true; //设相应键为true;
return 0;
}
break;
case WM_KEYUP:
if((wParam >= 0) && (wParam <= 255))
{
window->keys[wParam] = false;
return 0;
}我跟踪过程序,在按下任意一个字母键时,wParam的值均为229,而按下控制键时的值有改变,请问各位我的代码在哪里出问题了吗?或者是我方法用错了?

解决方案 »

  1.   

    数字和字母的虚拟键码是ASCII码。Windows程序几乎从不使用这些虚拟键码;实际上,程序使用的是ASCII码字符的字符消息。---------------<<WINDOWS程序设计>>
    KEY_down需要字母的键码.比较麻烦.我建议你采用WM_CHAR:
    然后就比如 CASE 'A' CASE 'B'这样.
      

  2.   

    谢谢lwsogood(飞天海豚) 后面知错了,加了分了,呵呵
      

  3.   

    不过还有个问题,就是我还需要用到如F1、F2之类的控制键,用WM_CHAR怎么处理呢?
      

  4.   

    简单咯~这时候再用case WM_KEYDOWN消息,
    CASE VK_F1  :
    如果用WM_CHAR可能不行,我没试过,因为这个是字符消息。
    建议你去看“WINDOWS程序设计”这本书,说的很详细。“处理按键和字符消息的基本规则是:如果需要读取输入到窗口的键盘字符,那么您可以处理WM_CHAR消息。如果需要读取光标键、功能键、Delete、Insert、Shift、Ctrl以及Alt键,那么您可以处理WM_KEYDOWN消息。“---------------<<WINDOWS程序设计>>