2011-04-30 5 views
0

이것은 이전 질문의 연속입니다. WinAPI: How to process keyboard input in custom edit control 질문의 성질이 약간 다르므로 다른 질문에 넣어야한다고 생각했습니다.WM_CHAR의 이상한 입력 - WinAPI

내 프로그램이 지금 입력을 받고 있지만 입력이 약간 벗어났습니다. 그래서 모든 기능은 기본적으로 자신의 유니 코드 호출

case WM_CHAR: 
    { 
     TCHAR inc; 
     inc = MapVirtualKey(wParam, 2); 

     for(short i = 0; i < sizeof(TCHAR); i++) 
     { 
      unsigned char* x = reinterpret_cast<unsigned char*>(&inc); 
      printf("0x%.2X ", x[i]); 
     } 

     //InvalidateRect(t_hwnd, NULL, 0); // Repaint the window... 

    } 
    break; 

이 프로그램은 유니 코드로 컴파일 : 설명하는 가장 좋은 방법은 여기

는 WM_CHAR를 처리하는 코드의 ... 당신에게 코드와 결과를 보여주는 것입니다 변종.

0x31로 회신 × 00 × 00 × 00 0x34 0x00으로 0x36 0x00으로
TCHAR 크기가 2 바이트, 그래서 이것은 "1 046 \"

누구나 알고에 나오는 다음과 같습니다

는 "asdf을"입력의 결과입니다 여기서 거래가 뭐야?

답변

1

MapVirtualKey는 키에 대한 검색 코드를 허용합니다. 그러나 WM_CHAR의 wParam은 스캔 코드가 아니며 char입니다. WM_KEYDOWN, wParam을 사용해야합니다. 스캔 코드가 있습니다. 당신을 위해

링크 :

http://msdn.microsoft.com/en-us/library/ms646280(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/ms646276(v=vs.85).aspx

+0

사실, MapVirtualKey 스캔 코드와 가상 키 코드를 모두합니다. 그것은 설명서를 잘못 읽었고 WM_CHAR은 가상 키 코드가 아닌 문자 코드를 반환합니다. 그래도 명확히 해줘서 고마워.^_ ^ – Gogeta70