GeSHi © 2004, Nigel McNie
-
void CRangeSlider::OnPaint()
-
{
-
CPaintDC RawDC(this); // device context for painting
-
-
CMemDC dc(&RawDC);
-
dc.SetMapMode(MM_TEXT);
-
-
if (m_bHorizontal) {
-
OnPaintHorizontal(dc);
-
} else {
-
// Vertical Mode
-
OnPaintVertical(dc);
-
}
-
}
Parsed in 0.013 seconds
요 코드에서 CMemDC 란 녀석이 더블버퍼링을 해주는 DC 클래스이다. CDC를 상속받은 객체의 포인터를 넘겨주면 생성자에 자동으로 메모리 DC와 비트맵 객체를 생성해서 가지고 있는다.
이후에 다른 DrawCode를 이 CMemDC에 그려주고 나서 위의 코드처럼 Paint 함수가 끝나면서 이 변수의 소멸자가 호출될때 소멸자에서 자동으로 Bitblt 함수를 호출해서 원래 DC에 그려주는 구조다.
더블버퍼링 코드를 일일이 써주기 귀찮을때 사용해주면 좋을듯.
게다가 h 파일 하나로 구성되어 있으니 컴팩트!
간단하지만 유용한 클래스인듯. 근데 요즘은 GDI+를 많이 써서.. GDI+용으로 포팅해서 써도 괜찮을듯 하다.



MemDC.h
