OnCreate() 함수는 WM_CREATE 메시지에 대한 핸들러 함수입니다.
즉, 어떤 윈도우 클래스가 윈도우로써 생성이 되면,
시스템이 그 윈도우에게 "너 이제 윈도우가 됐어"라는 의미로 WM_CREATE를 날려줍니다.
그러면 OnCreate()가 실행되면서 윈도우가 되면 할 수 있는 것들을 하게 되죠.
반면 OnInitialUpdate()라는 것은 가상함수입니다.
즉, 메시지에 대한 처리 함수가 아니라는 것입니다.
뷰 클래스의 내부로 들어가보면, OnInitialUpdate() 함수는 뷰가 윈도우로 생성된 후 도큐먼트에 의해 호출되게 됩니다.
SDI나 MDI같은 프레임워크의 경우는 도큐먼트, 뷰, 프레임이 한꺼번에 생성되고 연관되어 동작하기 때문에, 서로가 서로의 상태변화에 대해 알아야 합니다.
그래서 도큐먼트가 "자. 나 준비 됐으니깐 내 데이터를 가지고 너도 초기화해"라고 말해주게 되는데요, 이것이 OnInitialUpdate()입니다.
이 두 함수의 차이점을 보면,
WM_CREATE 메시지는 시스템이 윈도우로써의 생성을 알려주는 것이고,
OnInitialUpdate()는 도큐먼트가 뷰에게 초기화 기회를 주는 것입니다.
물론 뷰도 WM_CREATE 메시지를 받았을 때 어떤 동작을 할 수 있습니다.
타이머도 돌릴 수 있죠.
하지만 뷰는 도큐먼트와 프레임과 함께 동작해야 하기 때문에,
스스로 윈도우가 됐다는 것은 중요하지 않고,
도큐먼트가 준비가 되었는지가 중요한 것이죠.
그래서 뷰에 대해서는 OnInitialUpdate()에서 초기화를 진행하는 것입니다.
출처 : 네이버 지식IN
'MFC' 카테고리의 다른 글
ON_COMMAND_RANGE 매크로 (0) | 2019.03.31 |
---|---|
툴박스에 텍스트 삽입 (0) | 2019.03.30 |
디버깅에 도움을 주는 assert 매크로에 대하여 (0) | 2019.03.20 |
비트맵 처리 (0) | 2019.03.19 |
CDC 클래스 (0) | 2019.03.18 |