본문 바로가기
Study/MFC

더블 버퍼링 처리 샘플 코드

by 뿡뿡대마왕 2015. 11. 27.
반응형
  1. void CXXXDlg::OnPaint()  
  2. {  
  3.     CPaintDC dc(this); // device context for painting  
  4.     // TODO: 여기에 메시지 처리기 코드를 추가합니다.  
  5.     // 그리기 메시지에 대해서는 CWnd::OnPaint()을(를) 호출하지 마십시오.  
  6.   
  7.     // ***************************************************** //  
  8.     // 더블 버퍼링 처리.  
  9.     // ***************************************************** //  
  10.     CDC* pDC = GetDC();  
  11.   
  12.     CRect rect;  
  13.     GetClientRect(rect);  
  14.   
  15.     // 메모리 DC와 BITMAP 생성.  
  16.     CDC MemDC;  
  17.     CBitmap* pOldBitmap;  
  18.     CBitmap bmp;  
  19.   
  20.     // 메모리 DC 및 BITMAP과 현재 DC의 설정 일치.  
  21.     MemDC.CreateCompatibleDC(pDC);  
  22.     bmp.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height());  
  23.     pOldBitmap = (CBitmap*)MemDC.SelectObject(&bmp);  
  24.     MemDC.PatBlt(0, 0, rect.Width(), rect.Height(), WHITENESS);  
  25.   
  26.     // 메모리 DC에 그리기.  
  27.     DrawImage(&MemDC);  
  28.   
  29.     // 메모리 DC를 현재 DC에 복사.  
  30.     pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &MemDC, 0, 0, SRCCOPY);  
  31.   
  32.     // 사용된 메모리 DC 및 BITMAP의 삭제.  
  33.     MemDC.SelectObject(pOldBitmap);  
  34.     MemDC.DeleteDC();  
  35. }  

 

 

 

반응형

댓글