WM_CHAR는 문자에 대한 연산이고,
모든 키에 대한 연산을 위한
WM_KEYDOWN:
#include <windows.h>
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
HINSTANCE g_hInst;
LPCTSTR lpszClass = TEXT("keyDown");
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdParam, int nCmdShow )
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst = hInstance;
WndClass.cbClsExtra = 0;
WndClass.cbWndExtra = 0;
WndClass.hbrBackground = (HBRUSH)GetStockObject( COLOR_WINDOW+1 );
WndClass.hCursor = LoadCursor( NULL, IDC_ARROW );
WndClass.hIcon = LoadIcon( NULL, IDI_APPLICATION );
WndClass.hInstance = hInstance;
WndClass.lpfnWndProc = WndProc;
WndClass.lpszClassName = lpszClass;
WndClass.lpszMenuName = NULL;
WndClass.style = CS_HREDRAW | CS_VREDRAW;
RegisterClass( &WndClass );
hWnd = CreateWindow(lpszClass, lpszClass, WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
NULL, (HMENU)NULL, hInstance, NULL );
ShowWindow( hWnd, nCmdShow );
while( GetMessage( &Message, NULL, 0, 0 ) )
{
TranslateMessage( &Message );
DispatchMessage( &Message );
}
return (int)Message.wParam;
}
LRESULT CALLBACK WndProc( HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam )
{
HDC hdc;
PAINTSTRUCT ps;
static int x = 100; // 문자열의 x,y위치
static int y = 100;
static TCHAR str[2] = TEXT("A"); // 문자 1, 종료값 1개를 가지는 str
static bool changeChar = true; // bool타입, true = A, false = #
switch( iMessage )
{
case WM_KEYDOWN: // 키 입력을 받으면,
switch( wParam ) // 무슨 키인지 판단하여
{
case VK_LEFT: // 좌
x -= 10;
break;
case VK_RIGHT: // 우
x += 10;
break;
case VK_UP: // 위
y -= 10;
break;
case VK_DOWN: // 아래
y += 10;
break; // 각각 좌표를 맞게 변경하고
case VK_SPACE: // 스페이스 바를 눌렀으면
if( changeChar ) // true 상태면 #으로 변경
str[0] = '#';
else // false 면 A로 변경
str[0] = 'A';
changeChar = !changeChar; // bool 타입을 반대 속성으로 변경
break;
}
InvalidateRect( hWnd, NULL, TRUE ); // 매번 화면을 지우면서 갱신한다.
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT: // 꾸준히 출력
hdc = BeginPaint( hWnd, &ps );
TextOut( hdc, x, y, str, 1);
EndPaint( hWnd, &ps );
return 0;
}
return( DefWindowProc( hWnd, iMessage, wParam, lParam));
}
// 실행 결과
설명 : 방향키에 따라서 문자가 이동하고, 스페이스바를 누르면 A -> #으로 변경된다.
'프로그래밍 > API' 카테고리의 다른 글
API-타이머 (0) | 2010.04.21 |
---|---|
API-마우스입력 (0) | 2010.04.21 |
API-Key입력(1) (0) | 2010.04.21 |
API-MessageBox (0) | 2010.04.19 |
API-GraphOut (0) | 2010.04.19 |