我有一个定制的键盘...我想在他按下后得到它的ASCII码值...有一个问题...如果我按下小写的r,对应的AScII码值 114,但是键盘上F2的值也是114..两个按钮相应了同一个函数.WM_KEYDOWN中处理只能处理大写和功能键
WM_CHAR中处理只能处理大小写,却识别不出功能键请问如何处理能解决这个问题?

解决方案 »

  1.   

    if(GetKeyState(键盘码 )&0x80)
    {
    //按了***
    }WM_CHAR只传递那种能改变文本的键盘消息,对于对文本不产生效果的,它不传递.
    它是由WM_KEYDOWN消息 "翻译" 出来的,后者才是原始消息.
    如果我按下小写的r,对应的AScII码值 114,但是键盘上F2的值也是114..
    是么??? f2应该不对应任何值.哪个消息里这样显示的?KEYDOWN只判断哪个键被按下了,所以说是没有大小写一说的..如果要判断大小写状态, 那就需要其他函数配合了.比如GetKeyState()
      

  2.   

    我在PreTransMessage中对KeyDown消息进行了处理..
    if(PMsg->message==WM_KEYDOWN)
    {
         CString str;
         str.Format(L"%d",pMsg->wParam);
         AfxMessageBox(str);
    }
    发现按下F2与r键得到的值都是114.........请问如何解释