C & C++/MFC 컨트롤

화면 깜박임 방지

izen8 2012. 6. 20. 13:28



1.

윈도우 화면 깜빡임을 방지하기 위해서는 아래와 같은 코드를 추가하여야 한다.


1. OnPaint() 에서 더블버퍼링을 사용한다.

2. 배경색이 OnPaint() 에서 그리는 색과 다른 경우에는 WM_ERASEBKGND 처리를

수정하여야 한다. 이는 아래와 같이 수정하라.

1) 대화상자에 아래와 같은 내부 변수를 추가하라.

bool m_bIsEraseBkgnd;

2) 대화상자 생성자에 위의 값을 false 로 초기화하라.

3) 대화상자의 WM_ERASEBKGND 처리를 아래와 같이 하라.


BOOL CFileTransferView::OnEraseBkgnd(CDC* pDC)

{
    if( m_bIsEraseBkgnd )


    {
        return __super::OnEraseBkgnd(pDC);
    }
    else
    {
        return TRUE;
    }

}

4) OnPaint() 에서 더블버퍼링용 CDC 를 생성한 후, 아래의 코드를 추가하라.

m_bIsEraseBkgnd = true;
SendMessage( WM_ERASEBKGND, (WPARAM)dc.m_hDC, 0 );
m_bIsEraseBkgnd = false;



2.


NoFlickerStaticCtrl.zip