MFC관련 질문입니다. InitInstance가 어떤 원리에 의해 호출되는지 잘 모르겠네요.
글쓴이: lmk378 / 작성시간: 화, 2012/04/10 - 10:41오전
InitInstance가 어떤 원리에 의해 호출되는지 잘 모르겠네요.
프로젝트명을 HelloMFC라 했을때 HelloMFC.h와 HelloMFC.cpp가 생성이 되는데
여기에 CHelloMFCApp 클래스가 선언/정의되어 있습니다.
클래스 내에 InitInstance 함수가 있는데 이것이 어떻게 호출되는건가요?
제생각에는 CHelloMFCApp클래스를 대리자로 등록해서 오버라이드된 InitInstance를
사용한다는것을 어딘가에 명시해주던가 메시지큐에 CHelloMFCApp::InitInstance를 등록해야 할것으로 생각되는데요.
프로젝트 내 어디에도 이런 명시는 없군요.
Forums:
제일 좋은 방법은 통합환경에서 디버깅해보는 겁니다.
누가 어떻게 호출 하는 지를 확인해 보는 제일 좋은 방법은 통합환경에서 디버깅해보는 겁니다.
실제 자동으로 만들어진 CHelloMFCApp::InitInstance()함수의 내부에서 break point를 설정하시고,
멈췄을 때, 호출 스택(Call Stack)을 보세요.
제 경우에는 VS2008 SP1인데,
AfxWinMain()에서 호출을 하네요.(in winmain.cpp)
사실상, MFC framework 내에서 main()함수처럼 entry역할을 하는 함수입니다.
그리고, CHelloMFCApp::InitInstance()함수의 내부에는
parent의 InitInstance()를 명시적으로 불러주는 코드를 찾으실 수 있습니다.
InitInstance()의 함수의 용도나 사용법에 대해서는 관련 책을 참고하셔서 정독을 한번 하시는 것이 좋습니다.
간략하게만 설명을 하면,
CWinApp를 상속하는 CHelloMFCApp이 만들어지고(instance) Show()이전에 관련된 resource를 생성/정리 하는 부분입니다.
그 내부에 메인 윈도의 ShowWindow()함수도 포함되어 있습니다.
참고하시기 바랍니다.
답변 감사합니다.^^
답변 감사합니다.^^
댓글 달기