반응형
화면 갱신 OnPaint(), OnDraw(), Invalidate()
1. OnPaint(), OnDraw() 함수는 Client영역을 다시그려줘야 할 필요가 있을 때 호출되는 함수 이다.
2. Client영역을 다시 그려줘야함 → WM_PAINT → OnPaint → OnDraw
즉, OnPaint 는 윈도우 메시지에 의해 호출되는 메시지 처리기 함수 이고,
OnDraw 는 OnPaint 함수에서 호출되는 함수 이다.
virtual void OnDraw( CDC* pDC ) = 0;
afx_msg void OnPaint( );
Invalidate()
MFC 에서 무언가 그리고 화면에 표현 할때 화면에 변화를 주고 싶다고 할때 쓰이는 함수가 Invalidate 함수인데
이함수는 화면을 갱신할때 즉 WM_PAINT 와 같은 메시지를 호출해준다.
그런데 Invalidate에 인자로 TRUE와 FALSE가 있는데 이둘의 차이점은 다음과 같다.
Invalidate(FALSE) -> WM_PAINT
Invalidate(TRUE) -> WM_ERASEBKGND -> WM_PAINT
즉 FALSE 인자는 백그라운드(현재 그려저 있는 거 포함)를 지우지 않고 그냥 그린다.
TRUE는 백그라운드를 다 지우고 그린다.
FALSE 같은 경우는 한영역에서 그림이 많이 변화하는 애니메이션을 재생할때 많이 이용된다.(어짜피 그 부분만 변화하게 되므로)
TRUE 는 화면에서 여러 컨트롤의 위치나 크기등의 변화가 있을때 쓰인다. FALSE를 쓰면 이동하기 전의 그림이 남아있기 때문이다
반응형
'C & C++ > MFC Media' 카테고리의 다른 글
CListCtrl 에 이미지(tga, png, jpg, tif, bmp) 컨트롤 하기 (0) | 2011.04.28 |
---|---|
배경 이미지 연속적으로 돌리기 (0) | 2011.04.28 |
GDI 를 이용한 그래픽 출력을 위한 모든 도구, 함수의 집합 (0) | 2011.04.25 |
GDI 를 이용한 화면출력 (0) | 2011.04.25 |
이미지 CxImage (0) | 2011.04.25 |
댓글