1. 위아래로 가는 네모
RECT rc; 1.
LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
{
PAINTSTRUCT ps;
HDC hdc;
switch (iMessage)
{
case WM_CREATE: 3.
rc = {50,50,100,100}; 2.
break;
case WM_PAINT:
{
hdc = BeginPaint(hWnd, &ps);
Rectangle(hdc,rc.left , rc.top , rc.right , rc.bottom);
EndPaint(hWnd, &ps);
}
break;
case WM_KEYDOWN: 4.
{
switch (wParam) 5.
{
case VK_UP: 6.
rc.top -= 5;
rc.bottom -= 5;
break;
case VK_DOWN: 6.
rc.top += 5;
rc.bottom += 5;
break;
case VK_ESCAPE: 6.
PostQuitMessage(0); 7.
break;
}
InvalidateRect(_hWnd, NULL, true); 8.
}
break;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
return (DefWindowProc(hWnd, iMessage, wParam, lParam));
}
1. RECT rc : RECT 선언
2. rc = {50,50,100,100}; :rc = {x1,y1,x2,y2} 대로 입력됨
각각의 값은 rc.left , rc.top , rc.right , rc.bottom 으로 호출 가능
3. WM_CREATE: :메시지 시작할 때 1회 실행됨
4. WM_KEYDOWN: :키가 눌릴때 반응
5. 위에 LRESULT CALLBACK WndProc(HWND hWnd, UINT iMessage, WPARAM wParam, LPARAM lParam)
부분에서 WPARAM wParam
:키보드 클릭 및 마우스 클릭을 체크한다.
6. VK_UP(DOWN,ESCAPE) :키 체크(방향키 위,아래,ESC)
7. PostQuitMessage(0) :메세지 루프를 탈출 시켜줌
8. InvalidateRect(_hWnd, NULL, true); :정해진 영역을 지우고 갱신한다.
InvalidateRect(_hWnd(핸들), 초기화 영역, 배경 갱신 여부);
9.intersectRect(&rc, &rc1, &rc2); :Rect끼리의 충돌을 체크해준다. 서로 만나는 공통좌표를 확인함.
intersectRect(계산용 rect, 1번 rc, 2번 rc);
'C++ 2D' 카테고리의 다른 글
7. 시간과 입력 (0) | 2021.05.31 |
---|---|
6. 싱글 톤 패턴 (0) | 2021.05.31 |
5. 마우스 (0) | 2021.05.28 |
2. 텍스트 및 도형 출력 (0) | 2021.05.26 |
1. C++ Window.h (0) | 2021.05.25 |