화면에 이미지나 도형, 텍스트 등 여러가지를 출력하다 보면 깜박거리는 현상을 보게 된다. 한 번 출력하고 말 것이라면 크게 문제가 안 될 수 있지만 지속적으로 출력하는 상황에서는 깜박거림은 피하고 싶은 문제 중 하나이고 가장 쉽고 일반적인 해결책은 더블 버퍼링이다.
다음은 메모리 DC를 이용한 더블 버퍼링 방법이다.
1. 출력하려는 크기의 비트맵과 메모리 DC를 생성하고 메모리 DC에 생성된 비트맵을 선택한다.
HBITMAP hbmMem = CreateCompatibleBitmap(hdc, 48, 48);
HDC hdcMem = CreateCompatibleDC(hdc);
HBITMAP hbmOld = (HBITMAP)SelectObject(hdcMem, hbmMem);
2. 생성한 메모리 DC(hdcMem)로 그리려는 내용을 출력한다.
3. 메모리 DC의 내용을 출력할 DC로 복사한다.
BitBlt(hdc, 0, 0, 48, 48, hdcMem, 0, 0, SRCCOPY);
4. 메모리 DC와 비트맵을 정리한다.
SelectObject(hdcMem, hbmOld);
DeleteObject(hbmMem);
DeleteDC(hdcMem);
'개발' 카테고리의 다른 글
COM 인터페이스 포인터를 서로 다른 Apartment로 전달하기 (0) | 2007.06.27 |
---|---|
Windows NT 계열에서 프로세스 강제 종료하기 (0) | 2007.06.01 |
투명 이미지 그리기(MaskBlt, TransparentBlt) (1) | 2007.04.03 |
MFC의 CPropertySheet, CPropertyPage에서 디자인 깨지는 문제 (1) | 2007.02.28 |
Windos Vista에서 IE7 실행 및 IWebBrowser2 인터페이스 얻기 (0) | 2007.02.23 |
댓글