본문으로 바로가기

[WinAPI] 무효 영역

category 관심 분야/Windows API 2022. 10. 8. 20:21
반응형

 윈도우즈에서는 하나의 프로세스가 다른 프로세스에 의해 화면이 가려지거나 최소화를 하게 될 경우 윈도우의 가려진 부분을 지우는 무효 영역이 발생된다. 가려진 부분을 복구할 경우 무효 영역에 의해 지워진 부분을 다시 그려줘야 하는데 이 때 WM_PAINT 메시지가 호출된다.

 

 고의적으로 무효 영역을 호출하는 함수가 바로 InvalidateRect 함수이며 이 함수가 호출 될 때 위와 마찬가지로 WM_PAINT 메시지가 호출이 되며 지정한 영역의 화면이 다시 그려지게 된다. 함수의 원형은 이렇다.


BOOL WINAPI InvalidateRect(HWND hWnd, RECT *lpRect, BOOL bErase);


InvalidateRect 함수는 실행에 성공할 경우 0 이외의 값을 반환하며 실패할 경우 0을 반환한다.


 첫 번째 인자는 무효 영역을 호출하고 싶은 윈도우 핸들을 지정해주면 된다. NULL일 경우 모든 윈도우를 무효화하지만 권장하지 않는다.


 두 번째 인자는 해당 윈도우의 무효 영역을 호출하고 싶은 좌표 영역을 RECT 구조체에 저장해 포인터로 전달하면 된다. NULL일 경우 윈도우의 모든 영역을 처리한다.


 세 번째 인자는 무효 영역에 그려진 화면을 지울 것인지 여부를 판단하는 진리값을 전달하면 된다. 이 값이 TRUE일 경우 BeginPaint 함수가 호출 될 때 배경을 지우고 다시 그린다. FALSE일 경우 배경을 지우지 않고 다시 그린다.