WM_CHAR 메시지
윈도우즈는 키보드로부터 입력을 받아 하나의 프로그램에 키보드 메세지(WM_CHAR)를 보내준다. 멀티 태스킹 환경에서 여러개의 프로그램을 실행하고 있더라도 활성화된 프로그램만 입력 받을 수 있다.
*WndProc에 변수가 선언되어 있는경우 지역변수이기 때문에 메시지 발생할 때마다 초기화되기 때문에 앞에 static을 붙여 정적변수를 만들어야 한다. 아니면 전역 변수로 선언하는 방법도 있다.
case WM_CHAR:
len = _tcslen(str);
str[len]=(TCHAR)wParam;
str[len+1]=0;
InvalidateRect(hWnd,NULL,TRUE);
return 0;
문자키가 입력되어지면 입력되어져있는 문자열의 길이를 strlen함수를 이용하여 얻는다.
문자열 끝에 입력받은 wParam값을 넣어주고 그 뒤에 NULL값을 넣어 문자열의 끝임을 알려준다.
그리고 InvaildateRect함수를 호출하여 WM_PAINT 메시지를 발생시켜 문자열이 입력될때마다 새로 화면을 그리도록 하고있다.
WM_KEYDOWN 메시지
문자 이외의 키를 입력 받는 경우에 쓰여진다.
static int x=100;
static int y=100;
case WM_KEYDOWN:
switch(wParam) {
case VK_LEFT:
x-=8;
break;
case VK_RIGHT:
x+=8;
break;
case VK_UP:
y-=8;
break;
case VK_DOWN:
y+=8;
break;
}
InvalidateRect(hWnd,NULL,TRUE);
return 0;
키가 입력 되어지면 wParam값을 읽어서 입력된 키값을 받아서 그에 맞는 x좌표,y좌표의 값이 변하고 있다.
WM_KEYDOWN 메시지와 반대로 키에서 떨어질때 발생하는 WM_KEYUP 메시지도 있는데 발생조건만 다를뿐 WM_KEYDOWN 메시지와 동일하다. 잘 쓰이지는 않는다
'Programming > API' 카테고리의 다른 글
마우스의 입력 (0) | 2013.08.13 |
---|---|
무효화 영역과 InvalidateRect 함수 (0) | 2013.08.09 |
가상키코드 (0) | 2013.08.08 |
IME를 사용해서 한글입력기를 만들잣! (0) | 2013.08.06 |
멀티바이트와 유니코드 (0) | 2013.08.06 |