JHB의 프로그래밍 삽질기

[TroubleShooting/MFC] Double Buffering을 구현하였는데도 깜빡이는 문제 본문

PROGRAMMING/Win/MFC

[TroubleShooting/MFC] Double Buffering을 구현하였는데도 깜빡이는 문제

roter 2012.02.24 05:07

몇일째 고민했던가...
더블 버퍼링으로 화면 출력을 시켰는데도 계속 깜빡이는 것이었다.

나는 이것의 문제를 내부에 사용한 MoveWindow나 BitBlt로 옮기는 대상과 타겟의 가로 영역 너비가 너무 길어서 라고 생각했다.

문제는 그것이 아니였다..

'음악 재생'시 사용하는 '바'가 움직일 때 화면을 계속 리프레쉬하면서 보여주기 위해 타이머를 사용하였는데, 이때 타이머에서 Invalidate(FALSE); 를 해주는 것이 문제였다.

어짜피 계속해서 Invalidate가 들어오고 있기 때문에 다른 곳에서는 이걸 해줄 필요가 없는데, 나는 MouseMove등에서도 계속해서 Invalidate를 호출해 주고 있었다.
그러니 마우스를 움직일때마다 엄청나게 호출되는 Invalidate덕분에 깜빡거렸던 것이다..

더욱이, Invalidate를 쓸 때는 웬만하면 InvalidateRect로써 원하는 부분만 무효과 시켜주는 것이 좋을 것 같다. 그것이 속도를 조금이나마 빠르게 하는데 도움이 되는듯 하다.
저작자 표시 비영리 변경 금지
신고
0 Comments
댓글쓰기 폼