윈도우즈 API 정복 1권 4장 KeyDown2 과제정답입니다.
ch를 static으로 선언하던가 아니면 전역으로 선언해야됩니다.-ㅅ-;
#include <windows.h>
LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
HINSTANCE g_hInst; //hINstance값 저장
LPSTR lpszClass="KeyDown"; //윈도우 클래스정의, 윈도우타이틀바에 표기됨
int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpszCmdParam,int nCmdShow) //첫번째함수
{
g_hInst=hInstance;
HWND hWnd;
MSG Message;
WNDCLASS WndClass;
WndClass.style=CS_HREDRAW | CS_VREDRAW; // 크기변경시 다시그리기(HREDRAW,VREDRAW)
WndClass.lpfnWndProc=(WNDPROC)WndProc; //***********************
//메시지처리함수를 지정. 메시지발생시마다 지정하는 함수가 호출되어 이 함수가 메시지처리
WndClass.cbClsExtra=0; //예약공간.
WndClass.cbWndExtra=0; //예약공간.
WndClass.hInstance=hInstance; //클래스등록
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
WndClass.hbrBackground=(HBRUSH)GetStockObject(COLOR_WINDOW+1); //윈도우배경을 색칠할 브러시색깔
WndClass.lpszMenuName=NULL; //메뉴 안쓸경우 null
WndClass.lpszClassName=lpszClass; //*****************************
RegisterClass(&WndClass); //레지스터클래스 함수를 호출해 윈도우 클래스를 등록한다.
hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW, // 윈도클래스,타이틀글씨,윈도형식
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, // 화면위치,크기지정
NULL,(HMENU)NULL,hInstance,NULL); //부모윈도우, 메뉴핸들지정, 프로그램핸들,
ShowWindow(hWnd,nCmdShow); //CreateWindow로 만든것을 화면에 보인다.
while(GetMessage(&Message,0,0,0)) {
TranslateMessage(&Message);
DispatchMessage(&Message);
}
return 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;
static TCHAR *ch=TEXT("*");
switch(iMessage)
{
case WM_KEYDOWN:
switch(wParam)
{
case VK_SPACE:
if(ch=="*")
{
ch="#";
}else{
if(ch=="#")
{
ch="*";
}
};
break;
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;
case WM_PAINT:
hdc=BeginPaint(hWnd,&ps);
TextOut(hdc,x,y,ch,1);
EndPaint(hWnd,&ps);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
'프로그래밍언어' 카테고리의 다른 글
printf와 puts의 차이 (0) | 2010.01.21 |
---|---|
scanf 와 gets 의 차이 (0) | 2010.01.21 |
C로만든 야구게임 소스 (3) | 2010.01.21 |
For문 활용예제 (0) | 2009.07.17 |
초보를 위한 프로그래밍 언어강좌? - JAVA 2편 (0) | 2008.12.29 |
초보를 위한 프로그래밍 언어강좌? - JAVA 1편 (0) | 2008.12.22 |