티스토리 뷰

프로그래밍/MFC

MFC 화면 다시그리기

에어버스 2016. 6. 12. 13:31

화면에 다시 그려야 할 부분을 프로그램에게 알려주면 프로그램이 알아서 그린다.

화면을 다시 그려야할 때는 해당 응용프로그램에게 WM_PAINT 메시지를 보낸다,

응용프로그램은 WM_PAINT메시지를 받으면 ::BeingPaint()르 ㄹ호출해서 다시 그려야 할 영역에 대한 정보와 이영역에 출력할 수 있는 HDC를 얻어 다시 그릴 영역만 다시 그리면 된다.

WM_PAINT 메시지를 처리할때 중요한 사항은 출력할 내용이 없더라도 바드시 ::BeginPaint()를 호출해야 한다, 이렇게 함으로써 무효영역이 유효영역으로 바뀌게 된다. 그렇지 않으면 OS는 무효영역이 계속 존재하는 것으로 간주하고 WM_PAINT 메시지를 계속 발생하기 때문에 프로그램이 제대로 동작하지 않게된다.

WM_PAINT 메시를 받는 경우

1. 윈도우가 생성될때
2. 윈도우 크기가 변경될때
3. 최소화, 최대화 되었을때
4. 다른 윈도우에 의해 가려졌다가 표시될떄

강제적으로 WM_PAINT 메시지를 발생시키기

1. CWnd::Invalidate(BOOL bErase=TRUE)
2. CWnd::InvalidateRect(LPCRECT lpRect, BOOL bErase=TRUE)

bErase : 배경을 지울것인지 나타내는 값

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28