2011-08-10 3 views
0

내가 같은 시스템을 사용 : 소문자 문자 또는 특수 문자에 대한 작업을 나던사용자 키보드 입력을 읽는 방법? 순간

case WM_KEYDOWN: 
keys[wParam] = true; 

"&"그래서 메신저 묻는 그래서 내가 하나를 얻을 수있는 키보드를 읽을 수있는 WINAPI 기능이있다 그가 쓴다면 사용자의 8 비트 문자는 "Æ"나는이 테이블에서 해당 문자에 해당하는 인덱스를 얻을 것입니다 :

enter image description here

(의 경우 이미지가 작동하지 : http://img801.imageshack.us/img801/1965/asciipage.png)

Im이 테이블을 사용하여 OpenGL 응용 프로그램에서 텍스트를 렌더링하므로이 테이블에서 사용자 키보드가 내 프로그램 채팅 라인에 생성 한 문자를 찾아야하므로 내 게임에서 채팅을하려고합니다.

+0

문자 코드가 <32 인 경우를 제외하고 테이블은 Windows ANSI Western 문자 집합과 유사합니다. Windows ANSI Western이 될 예정입니까? –

+0

나는 그것이 'iso-8859-1'이어야한다고 생각한다. 그래도 WM_CHAR을 사용하는 아래의 대답에 문제가 있습니까? – Rookie

+0

제어 문자 (컨트롤 줄 문자, 백 스페이스, 탭 및 이스케이프 포함)에 대해서는 중요하지 않다고 생각하지만, 예를 들어. 유로 통화 기호, €. 예를 들어 상단에 두 개의 점이있는 y, ÿ. 또한 Latin-1에는 Windows ANSI Western의 전체 행이 2 개 부족하지만 일반적으로 이러한 문자는 키보드에서 직접 사용할 수 없습니다. –

답변

4

완전히 번역 된 문자 코드를 제공하는 WM_CHAR 메시지가 있습니다. 메시지 루프는 TranslateMessage (DispatchMessage)보다 먼저 사용해야합니다.

+0

완벽하게 작동하는 것 같습니다. 나는 컨트롤 문자가 "visible"도 거기에서 눈치 챘다. 그래서 해결책은 32 이하의 모든 것을 무시하는 것이라고 생각한다. – Rookie

+0

VK_DELETE 등 열거 형에 일치하는 제어 문자 목록이 있는가? (VK_DELETE는 WM_CHAR이 delete를 눌러서주는 것과 같은 char이 아닙니다.) 또는 제어 문자를 처리하는 데 사용해야하는 메서드는 무엇입니까? 편집 : 실제로 나는이 모든에서 VK_DELETE 메시지를 얻을 수 없습니다 ...하지만 VK_BACK 같은 다른 WM_CHAR 값을 일치하지 않습니다. 그래서 어떻게 WM_CHAR 메시지 처리기에서 단추를 삭제할 수 처리, 또는 심지어 가능 한가? – Rookie

관련 문제