kyuseo의 게임 프로그래밍

다양한 시점에서 AfxGetMainWnd()가 리턴하는 윈도우는? 본문

C++ 개발

다양한 시점에서 AfxGetMainWnd()가 리턴하는 윈도우는?

kyuseo 2008. 1. 3. 19:53

개요..

 

AfxGetMainWnd() 함수는 MFC 프로그래밍에서 어플리케이션의 메인 윈도우를 얻기 위하여 자주 사용하는 함수입니다. 하지만 문제는 이 함수가 항상 원하는 윈도우를 리턴하지 않을 수 도 있다는 것입니다. 즉 MVC 구조에서 CMainFrameWnd, 다이얼로그에서 CMainDialog 를 항상 리턴하지 않습니다.

 

따라서 MainWindow 가 완전하게 생성되기 전에  AfxGetMainWnd() 을 호출할 경우 리턴되는 윈도우를 주의하여 사용해야 합니다. (특히 스플레시 윈도우가 있을 경우)

 

 

내용

 

AfxGetMainWnd()는 다음과 같은 순위로 윈도우를 리턴 합니다.

1순위 : CWinThread::m_pActiveWnd

(주의 : CWinThread 의 m_pActiveWnd 는 CWnd::GetActiveWindow() 는 다른것입니다.)

   

2순위: CWinApp::m_pMainWnd 

   

3순위 :  CWnd::GetActiveWindow()