我发现OnKeyDown事件
void CTestView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)
{
    CString str;
 str.Format("%c",nChar);
 AfxMessageBox(str);
 CView::OnKeyDown(nChar, nRepCnt, nFlags);
}
显示的都是大写,怎么让它区分大小写?
还有怎么按下F1、F2、F3、F4它会分别显示"p""d""r""s",真怪,到底怎么回事?

解决方案 »

  1.   

    你应该查查书,看看键值对应的Ascii码!
      

  2.   

    int islower( int c );
    islower returns a non-zero value if c is a lowercase character (a – z). 当然,你还可以用ASCII值来判断。
      

  3.   

    这是收集到的按键的ascii值.
     case 0x30:
    temp = "0";
    break;
    case 0x31:
    temp = "1";
    break;
    case 0x32:
    temp = "2";
    break;
    case 0x33:
    temp = "3";
    break;
    case 0x34:
    temp = "4";
    break;
    case 0x35:
    temp = "5";
    break;
    case 0x36:
    temp = "6";
    break;
    case 0x37:
    temp = "7";
    break;
    case 0x38:
    temp = "8";
    break;
    case 0x39:
    temp = "9";
    break;
    case 0x41:
    temp = "A";
    break;
    case 0x42:
    temp = "B";
    break;
    case 0x43:
    temp = "C";
    break;
    case 0x44:
    temp = "D";
    break;
    case 0x45:
    temp = "E";
    break;
    case 0x46:
    temp = "F";
    break;
    case 0x47:
    temp = "G";
    break;
    case 0x48:
    temp = "H";
    break;
    case 0x49:
    temp = "I";
    break;
    case 0x4A:
    temp = "J";
    break;
    case 0x4B:
    temp = "K";
    break;
    case 0x4C:
    temp = "L";
    break;
    case 0x4D:
    temp = "M";
    break;
    case 0x4E:
    temp = "N";
    break;
    case 0x4F:
    temp = "O";
    break;
    case 0x50:
    temp = "P";
    break;
    case 0x51:
    temp = "Q";
    break;
    case 0x52:
    temp = "R";
    break;
    case 0x53:
    temp = "S";
    break;
    case 0x54:
    temp = "T";
    break;
    case 0x55:
    temp = "U";
    break;
    case 0x56:
    temp = "V";
    break;
    case 0x57:
    temp = "W";
    break;
    case 0x58:
    temp = "X";
    break;
    case 0x59:
    temp = "Y";
    break;
    case 0x5A:
    temp = "Z";
    break;
    case VK_F1:
    temp = " F1 ";
    break;
    case VK_F10:
    temp = " F10 ";
    break;
    case VK_F11:
    temp = " F11 ";
    break;
    case VK_F12:
    temp = " F12 ";
    break;
    case VK_F2:
    temp = " F2 ";
    break;
    case VK_F3:
    temp = " F3 ";
    break;
    case VK_F4:
    temp = " F4 ";
    break;
    case VK_F5:
    temp = " F5 ";
    break;
    case VK_F6:
    temp = " F6 ";
    break;
    case VK_F7:
    temp = " F7 ";
    break;
    case VK_F8:
    temp = " F8 ";
    break;
    case VK_F9:
    temp = " F9 ";
    break;
    case VK_NUMPAD0:
    temp = " ([Extended]0) ";
    break;
    case VK_NUMPAD1:
    temp = " ([Extended]1) ";
    break;
    case VK_NUMPAD2:
    temp = " ([Extended]2) ";
    break;
    case VK_NUMPAD3:
    temp = " ([Extended]3) ";
    break;
    case VK_NUMPAD4:
    temp = " ([Extended]4) ";
    break;
    case VK_NUMPAD5:
    temp = " ([Extended]5) ";
    break;
    case VK_NUMPAD6:
    temp = " ([Extended]6) ";
    break;
    case VK_NUMPAD7:
    temp = " ([Extended]7) ";
    break;
    case VK_NUMPAD8:
    temp = " ([Extended]8) ";
    break;
    case VK_NUMPAD9:
    temp = " ([Extended]9) ";
    break;
    case VK_RETURN:
    temp = " (Return) ";
    break;
    case VK_TAB:
    temp = " (Tab) ";
    break;
    case VK_CLEAR:
    temp = " (Clear) ";
    break;
    case VK_MENU:
    temp = " (Alt) ";
    break;
    case VK_PAUSE:
    temp = " (Pause) ";
    break;
    case VK_ESCAPE:
    temp = " (Esc) ";
    break;
    case VK_SPACE:
    temp = " (Space) ";
    break;
    case VK_PRIOR:
    temp = " (Page Up) ";
    break;
    case VK_NEXT:
    temp = " (Page Dawn) ";
    break;
    case VK_END:
    temp = " (End) ";
    break;
    case VK_HOME:
    temp = " (Home) ";
    break;
    case VK_LEFT:
    temp = " (Left Arrow) ";
    break;
    case VK_RIGHT:
    temp = " (Right Arrow) ";
    break;
    case VK_UP:
    temp = " (Up Arrow) ";
    break;
    case VK_DOWN:
    temp = " (Down Arrow) ";
    break;
    case VK_SNAPSHOT:
    temp = " (Print Screen) ";
    break;
    case VK_INSERT:
    temp = " (Insert) ";
    break;
    case VK_DELETE:
    temp = " (Delete) ";
    break;
    case VK_MULTIPLY:
    temp = " ([Extended]*) ";
    break;
    case VK_ADD:
    temp = " ([Extended]+) ";
    break;
    case VK_SUBTRACT:
    temp = " ([Extended]-) ";
    break;
    case VK_DECIMAL:
    temp = " ([Extended].) ";
    break;
    case VK_DIVIDE:
    temp = " ([Extended]/) ";
    break;
    case VK_CAPITAL:
    temp = " (Caps Lock) ";
    break;
    case VK_NUMLOCK:
    temp = " (Num Lock) ";
    break;
    case VK_SCROLL:
    temp = " (Scroll Lock) ";
    break;
    case VK_LWIN:
    temp = " (Left Windows) ";
    break;
    case VK_RWIN:
    temp = " (Right Windows) ";
    break;
    case VK_APPS:
    temp = " (Menu) ";
    break;
    case VK_CANCEL:
    temp = " (Cancel) ";
    break;
    case 192:
    temp = "`";
    break;
    case 189:
    temp = "-";
    break;
    case 187:
    temp = "=";
    break;
    case 220:
    temp = "\\";
    break;
    case 8:
    temp = " (Back Space) ";
    break;
    case 219:
    temp = "[";
    break;
    case 221:
    temp = "]";
    break;
    case 186:
    temp = ";";
    break;
    case 222:
    temp = "'";
    break;
    case 188:
    temp = ",";
    break;
    case 190:
    temp = ".";
    break;
    case 191:
    temp = "/";
    break;
    case 255:
    temp = " (WakeUp/ShutDown) ";
    break;
    case 95:
    temp = " (Sleep) ";
    break;
    case 16:
    temp = " (Shift) ";
    break;
    case 17:
    temp = " (Ctrl) ";
    break;
      
      

  4.   

    F1没有对应的字符显示,就象Ctrl没有字符显示一样的