- Today
- Total
내 머릿속 데이터베이스
대각선 이동 본문
WM_TIMER 에서
GetKeyState(int nVirtKey) 함수를 이용하여 대각선 이동을 할 수 있다.
이 함수는 0x8000과 & 연산을 해서 결과값이 0이면 키가 눌려진것으로 간주한다.
간단한 사용예) 프로시져 부분
static POINT ptMove; //또는 전역변수, 맴버변수로
HDC hdc;
PAINTSTRUCT pt;
switch(iMessage){
WM_CREATE :
ptMove.x = 100;
ptMove.y = 100;
return 0;
WM_ACTIVATEAPP :
/////////// 폴링 ///////////
if(wParam)
SetTimer(hWnd, 0, 50, NULL);
else
KillTimer(hWnd, 0);
///////////////////////////
return 0;
WM_TIMER :
if(GetKeyState(VK_LEFT) & 0x8000)
ptMove.x -= 5;
if(GetKeyState(VK_RIGHT & 0x8000)
ptMove.x += 5;
if(GetKeyState(VK_UP & 0x8000)
ptMove.y -= 5;
if(GetKeyState(VK_DOWN & 0x8000)
ptMove.y += 5;
InvalidateRect(hWnd, NULL, TRUE);
return 0;
WM_PAINT :
hdc=BeginPaint(hwnd, &ps);
TextOut(hdc, ptMove.x, ptMove.y, TEXT("&"), 1);
EndPaint(hWnd, &ps);
return 0;
WM_DESTROY :
KillTimer(hWnd, 0);
PostQuitMessage(0);
return 0;
}
※ 폴링이란?
입력 메시지를 받지 않고 자신이 원할 때 정보를 입력 받는 방식
[출처] [Win32 API] 대각선 이동법(두개 이상의 키를 이용)|작성자 dods87