OLD_posting

[MFC]Invalidate(TRUE), Invalidate(FALSE)의 차이점 // UpdateData()

슈개 2013. 11. 17. 22:53
반응형
MFC에서 무언가 그리고 화면에 표현 할때 화면에 변화를 주고 싶다고 할때 쓰이는 함수가 Invalidate 함수인데 이함수는 화면을 갱신할때 즉 WM_PAINT 와 같은 메시지를 호출해준다.

그런데 Invalidate에 인자로 TRUE와 FALSE가 있는데 이둘의 차이점은 다음과 같다.

Invalidate(FALSE)  ->  WM_PAINT
Invalidate(TRUE)   ->  WM_ERASEBKGND   -> WM_PAINT

 FALSE 인자는 백그라운드(현재 그려저 있는 거 포함)를 지우지 않고 그냥 그린다.
TRUE는 백그라운드를 다 지우고 그린다.

FALSE같은 경우는 한영역에서 그림이 많이 변화하는 애니메이션을 재생할때 많이 이용된다.(어짜피 그 부분만 변화하게 되므로)

TRUE는 화면에서 여러 컨트롤의 위치나 크기등의 변화가 있을때 쓰인다. FALSE를 쓰면 이동하기 전의 그림이 남아있기 때문이다.


알면서도 헷갈리는 UpdateData(TRUE)와 UpdateData(FALSE)

맨날 헷갈리는데 확실히 짚고 넘어가자. DoDataExchange로 MFC 컨트롤과 변수가 서로 연결된 상태에서 변수에 현재 컨트롤 값을 반영하려면 TRUE,

변수의 값을 컨트롤에 반영하려면 FALSE 이다.


// nCurHScale 은 현재 수직값을 가지고 있는 지역변수인데

// m_EDIT_VERTICAL 이란 에디트 박스와 연결된 멤버함수에 값을 넣은 경우이다 (nCurHScale 에 있는 값을)


그러면 이것을 컨트롤에 표시하려면  

UpdateData(FALSE) 사용한다.



m_EDIT_VERTICAL=nCurHScale;  // 에디트 박스 값 넣어 주기 - 실시간 

//변수의 값을 컨트롤에 반영하려면 폴스이다.

UpdateData(false);




반응형

'OLD_posting' 카테고리의 다른 글

MySQL 기본 명령어 정리  (0) 2014.02.27
[MFC] 콤보 박스 사용  (0) 2013.12.02
FileTracker : error FTK1011 해결방법  (0) 2013.11.12
[MFC] 프로그램 안에서 외부 파일을 실행시키기  (0) 2013.11.04
PDF 보안 해제  (0) 2013.10.15