본문 바로가기
프로그래밍/라이브러리

[Win32 API] WM_PAINT msg 처리

by 써드아이 2008. 2. 6.
API에 보면 자체적으로 WM_PAINT msg를 발생시키는 함수들이 존재한다
SetWindowPos(), MoveWinodw(), UpdateWindow() 등..

그런데 WinProc CallBack 함수에서 WM_PAINT msg에 대한 처리를
하지 않으면 어떻게 될까?

특이하게도 무한 루프에 빠져 버린다.
아무 처리도 하지 않는 함수를 call 해봤다.
역시나 무한 루프에 빠져 버렸다.

BeginPaint() / EndPaint() 를 넣어주니까 이상 없이 넘어가 버렸다
(물론 화면에 아무것도 그리는 것은 없지만..)
특이한 증상이다..


한가지 더..
화면을 그리기 위해서 과연 WM_PAINT를 발생 시켜야만 하는지..
WM_PAINT에서 처리하는 루틴을 함수로 만들어
이 함수를 각 msg 처리 루틴에서 Invalidate..()류의 함수 호출 없이
실행시키면 화면이 그려지지 않는다..

왜 그럴까????


[달린 덧글]
MSDN에 BeginPaint()/EndPaint() 함수는 WM_PAINT msg 처리 루틴에서만
호출하라고 되어있네..
Invalidate..() 류의 함수가 단순히 WM_PAINT msg 발생 이외에 무언가
다른 작업을 수행하는듯...

이거 프로그램이 다식 복잡해지겠네...