본문 바로가기
Programming/MFC,C++

[MFC] OnCreate와 OnInitialUpdate의 차이점

by 기적 2013. 3. 15.

OnCreate() 함수는 WM_CREATE 메시지에 대한 핸들러 함수입니다.
즉, 어떤 윈도우 클래스가 윈도우로써 생성이 되면,
시스템에 그 윈도우에게 "너 이제 윈도우가 됐어" 라는 의므로 WM_CREATE를 날려줍니다.
그러면 OnCreate()가 실행되면서 윈도우가 되면 할 수 있는 것들을 하게 되죠.

반면 OnInitialUpdate() 함수는 가상함수 입니다.

즉, 메시지에 대한 처리 함수가 아니라는 것 입니다. 
View클래스의 내부로 들어가보면, OnInitialUpdate() 함수는 View가 윈도우로 생성된 후
Document에 의해 호출 되게 됩니다.

SDI나 MDI같은 프레임워크의 경우는 Document, View, Frame이 한꺼번에 생성되고 
연관되어 동작하기 때문에, 서로가 서로의 상태변화에 대해 알아야 합니다.
그래서 Document가 "자, 나 준비 되었으니까 내 데이터를 가지고 너도 초기화해" 라고 말해주게 되는데요,
이것이 OnInitialUpdate() 입니다.

이 두 함수의 차이점을 보면,
WM_CREATE 메시지는 시스템이 윈도우로써의 생성을 알려주는 것이고,
OnInitialUpdate()는 Document가 View에게 초기화 기회를 주는 것입니다.

댓글