是bioskey(0)与getch()的转换吗?

解决方案 »

  1.   

    UINT scancode = xxx;
    UINT virtualcode;
    virtualcode = MapVirtualKey( xxx, 1);
    char ch = MapVirtualKey( virtualcode, 2);
      

  2.   

    to plato:
    这样可以出来,但为什么我这样就不能出来呢?int CTestWnd::scan2ascii(DWORD scancode, LPWORD result)
    {
       static HKL layout=GetKeyboardLayout(0);
       BYTE State[256];
       if(!GetKeyboardState(State)) return 0;   UINT vk=MapVirtualKeyEx(scancode,1,layout);
       return ToAsciiEx(vk,scancode,State,result,0,layout);
    }从result返回。另外,你提供的方法,怎么只能显示大写字母?比如我按了"A"键,它显示A,而不是a, 我并没有按别的键,比如shift, caps lock等等。如何正确显示大小写?
      

  3.   

    这位已经指出用MapVirtualKeyEx这个函数了,请你查一下MSDN吧,我也是昨晚看API才知道有这个函数的。
      

  4.   

    在MSDN中看MapVirtualKeyEx函数的说明,也可以在MSDN中搜索代码例子.
      

  5.   

    to plato:
    为什么都是大写字母?
      

  6.   

    我用ToAsciiEx根本就无法返回字母,连大写字母都没有帮我检查一下这段代码有什么错?