#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst;
LPCTSTR lpszClass=TEXT("keydown2");
HINSTANCE g_hInst;
LPCTSTR lpszClass=TEXT("keydown2");
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
{
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
g_hInst=hInstance;
WndClass.cbClsExtra=0;
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
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);
WndClass.cbWndExtra=0;
WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
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);
ShowWindow(hWnd, nCmdShow);
while(GetMessage(&Message, NULL, 0, 0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return (int)Message.wParam;
}
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;
static int y=100;
{
HDC hdc;
PAINTSTRUCT ps;
static int x=100;
static int y=100;
static TCHAR str[256]={'A'};
switch(iMessage) {
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;
case VK_SPACE: // 여기부터
if(str[0]=='A')
{
str[0]='#';
}
else
{
str[0]='A';
} // 여기까지가 키포인트
}
InvalidateRect(hWnd,NULL,TRUE);
return 0;
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;
case VK_SPACE: // 여기부터
if(str[0]=='A')
{
str[0]='#';
}
else
{
str[0]='A';
} // 여기까지가 키포인트
}
InvalidateRect(hWnd,NULL,TRUE);
return 0;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,x,y,str,lstrlen(str));
EndPaint(hWnd,&ps);
return 0;
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,x,y,str,lstrlen(str));
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd, iMessage, wParam, lParam));
}
KeyDown2 문제로 유명한 그 문제
스페이스 누르면 A에서 #으로 바뀐다. 그리고 다시 스페이스 누르면 #에서 A로 다시...
2년전에 MFC를 존나 공부한적이 있었는데, 그때 쫌 해놨더니
API공부하고 있는 요즘, 존나 수월하게 진도가 나가고 있다.