티스토리 뷰
Development/Windows
[TroubleShooting/MFC] Double Buffering을 구현하였는데도 깜빡이는 문제
jhbaek 2012. 2. 24. 05:07몇일째 고민했던가...
더블 버퍼링으로 화면 출력을 시켰는데도 계속 깜빡이는 것이었다.
나는 이것의 문제를 내부에 사용한 MoveWindow나 BitBlt로 옮기는 대상과 타겟의 가로 영역 너비가 너무 길어서 라고 생각했다.
문제는 그것이 아니였다..
'음악 재생'시 사용하는 '바'가 움직일 때 화면을 계속 리프레쉬하면서 보여주기 위해 타이머를 사용하였는데, 이때 타이머에서 Invalidate(FALSE); 를 해주는 것이 문제였다.
어짜피 계속해서 Invalidate가 들어오고 있기 때문에 다른 곳에서는 이걸 해줄 필요가 없는데, 나는 MouseMove등에서도 계속해서 Invalidate를 호출해 주고 있었다.
그러니 마우스를 움직일때마다 엄청나게 호출되는 Invalidate덕분에 깜빡거렸던 것이다..
더욱이, Invalidate를 쓸 때는 웬만하면 InvalidateRect로써 원하는 부분만 무효과 시켜주는 것이 좋을 것 같다. 그것이 속도를 조금이나마 빠르게 하는데 도움이 되는듯 하다.
'Development > Windows' 카테고리의 다른 글
윈도우 배치 파일 강좌 (1) | 2018.01.06 |
---|---|
[MFC] CRect의 IsRectNull()과 IsRectEmpty() (0) | 2016.02.16 |
[MFC] DLL에서 STL (vector) Export 하기 (0) | 2016.02.01 |
[MFC] ToolBar 항목 지우는 방법 (2) | 2012.02.26 |
[MFC] 다이얼로그 배경 투명하게 만들기 (0) | 2012.02.23 |
[MFC] Double Buffering 더블 버퍼링 사용하기 (0) | 2012.02.19 |
MFC로 구현한 옵져버 패턴(옵저버 패턴)Observer 기본 뼈대 (0) | 2012.02.18 |
[MFC] 아무리 봐도 햇깔리는 화면 좌표에 관련 한 것.. (0) | 2011.10.17 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- Quiz
- kering
- algorithm
- Visual C++
- AWS
- gcc
- java
- Cloud
- 드라이버
- source
- it
- Troubleshooting
- db
- API
- MFC
- winapi
- jni강좌
- jni
- android
- NDK
- 프로그래밍
- Python
- database
- 안드로이드
- C
- linux
- C++
- 음악
- driver
- 리눅스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함