WM_PAINT 메시지의 특별한 동작
WM_PAINT 메시지가 메시지 큐에 있을 때, GetMessage()는 메시지를 제거하지 않는다.
WM_PAINT 메시지를 제거하는 곳은 BeginPaint() 호출에서다.
그러므로 WM_PAINT 메시지를 처리하는 곳에서는 반드시 BeginPaint()를 호출해야 한다.
그렇지 않으면 윈도우 프로시저는 제거되지 않는 WM_PAINT메시지를 계속 받게 된다.
또한 WM_PAINT 메시지가 아닌 곳에서 DC를 얻기 위해 BeginPaint()를 사용하는 것은 메시지 큐에서 WM_PAINT를 지울 수 없으므로 타당한 DC를 얻지 못하게 된다.
- 반드시 기억하여 두자.
WM_PAINT 메시지에서는 BeginPaint()로 DC를 얻고, 다른 메시지에서는 GetDC()를 사용해야 한다.
이것은 MFC에서 BeginPaint()를 사용하는 DC와 GetDC()를 사용하는 DC 클래스가 다르게 구현되어야 하는 이유다.
'API' 카테고리의 다른 글
Dll 재배치, 로딩, 구현 (0) | 2008.09.03 |
---|---|
윈도우 메시지 종류 및 큐잉, 비큐잉 메시지 (0) | 2008.09.01 |
WM_PAINT의 비밀...? - 메시지 큐잉 관련 좋은 글....비큐 메시지/큐 메시지 정확한 구분 (0) | 2008.08.31 |
[Win32 - 김상형윈도우즈API정복-정리노트] 메타파일 Win32 (0) | 2008.08.30 |
ShellExecute 사용예 - 좋음 (0) | 2008.08.29 |
확장 dll 만들기 및 lib 파일 존재 이유 (0) | 2008.08.29 |
DLL 테스트할 샘플 코드 만들기 - 프로젝트 병합 살펴볼 것 (1) | 2008.08.29 |