2012-12-20 3 views
1

빈 Win32 프로젝트가 있습니다. 내가 배열의 각 키 입력을 저장해야이 경우에 따라키 스트로크는 어떻게 저장합니까?

CASE WM_CHAR: 

,

TextOut(); 

내가 그것을 이런 식으로 뭔가있을거야 생각 사용하여 화면에 다음 출력을 :

char store[LARGE_NUMBER]; 

그런 다음 wm_char 헤더에서 저장중인 문자를 저장 한 다음 카운터를 사용하여 눌려진 각 키의 배열을 따라 이동합니다. wm_char case를 호출하는 키가 아닌 특정 키를 키보드에 기록하는 방법을 모르겠습니다.

감사

+1

우선 std :: vector를 사용하십시오. 필요에 따라 동적으로 크기를 조정할 수 있으며, 크기를 알려주는'size()'함수가 있습니다. 예를 들어'std :: vector '을 사용한다면,'vec.data()'를'TextOut'에 건네면 그것을 인쇄 할 수 있습니다. 나는 당신의 질문으로 당신이 의미하는 것을 이해하지 못합니다. 먼저 적절한 WM_KEY * 메시지를 호출한다. 'TranslateMessage'를 사용하면 WM_CHAR 메시지도 생성됩니다. 버퍼에 넣는 값에 따라 필터링 할 수 있습니까? – chris

+0

난 그냥 문자의 배열에 각 키를 저장해야합니다, 키를 눌러 문자가 아니라 유니 코드를 의미합니다. 나는 키보드에서 키를 누를 때 프로그램이 응답한다고 생각했기 때문에 WM_CHAR을 거기에 넣었습니다. (적어도 메시지 상자를 넣었을 때 그랬습니다) – William

+0

'chars.push_back (wParam);은 벡터를 사용할 때 그냥해야합니다 및'WM_CHAR'. 메시지 펌프에'TranslateMessage'를 사용했는지 확인하십시오. – chris

답변

1

wParam 매개 변수는 누른 키의 문자 코드를 보유하고 있습니다. the documentation을 살펴보십시오. lParam에는 키 누름에 대한 자세한 정보가 들어 있습니다 (특수 키, 키 누름 등).

+0

키 코드가 약간 잘못된 것 같습니다. 필자는 항상 WM_KEY *를 사용했지만 설명서에는 문자 코드, 즉 문서를 오해하지 않는 한'VK_NUM6'은 키 코드가 아닌'wParam'에서''6 ''을 의미합니다. – chris

관련 문제