BeginPaint()는 메시지를 처리하는 WndProc()의 case WM_PAINT: 에서만 쓸 수 있는 전용 함수이다.
왜냐하면, BeginPaint()로 얻고, EndPaint()로 해제하는 이 과정에서 Window 창의 무효화 영역이 해제됐다고
알리는 역할이 있기 때문이다.
우리가 case WM_PAINT: 를 진입하는 주 원인 자체가, 무효화 영역이 발생하여서 이를 다시 그리기 위한 목적이었는데,
그렇기에 BeginPaint() ~ EndPaint() 과정에서 무효화 영역이었던 것을 해제시키는 역할이 들어있는 것이고,
이를 WM_PAINT 케이스에서만 사용하여야만 하는 것이 된다.
(정확히는 EndPaint()로 해제하는 시점에서, 무효화 영역이 모두 사라졌다고 알림이 가게 되는 것이다.)
case WM_PAINT:
{
PAINTSTRUCT ps;
HDC hdc = BeginPaint(hWnd, &ps);
//Rectangle(hdc, 1180, 0, 1280, 100);
EndPaint(hWnd, &ps);
}
break;
이와 대조적으로, 메시지가 쌓여있든 말든, 무효화 영역이 있든 말든 이와는 상관없이 단순히 그리는 것이 목적이라면,
GetDC() ~ ReleaseDC ()를 사용하면 된다.
(다음 글에서 다뤄보자)
'(2022) 공부 (Study) > 게임 개발 (Development)' 카테고리의 다른 글
[Win32API] GetAsyncKeyState() 와 키 입력 받기 (1) (0) | 2022.04.13 |
---|---|
[Win32API] 오브젝트 이동 : 시간 동기화 (2) (0) | 2022.04.13 |
[Win32API] 오브젝트 이동 : 시간 동기화 (1) (0) | 2022.04.13 |
[Win32API] GetTickCount64를 이용한 호출 횟수 및 프레임 체크 (0) | 2022.04.13 |
[Win32API] GetDC() ~ ReleaseDC() 함수 (0) | 2022.04.13 |