본문 바로가기

Programming/MFC

VC++ 7.1에서의 AfxGetMainWnd

출처 피아니스트가 되고싶은 프로그래머 | gazette2
원문 http://blog.naver.com/gazette2/100008526275



MFC의 전역함수 AfxGetMainWnd

일반 윈도우 애플리케이션의 경우 이 함수를 호출하면

CWinApp::m_pMainWnd가 가리키는 포인터를 반환하는 것으로 알려져 있다.


그러나, 애플리케이션의 메인 스레드가 아닌 다른 스레드에서 이 함수를 사용하게 되면

내가 원하는 윈도우와는 다른 윈도우를 반환하게 될 경우가 있다.


MSDN에 의하면, VC 7.0 이상의 버전에 대해서 이 함수는, 스레드가 다른 경우, 호출된 스레드의 메인 윈도우(UI 스레드인 경우)를 반환하게 되거나, 혹은 NULL을 반환하게 된다.(MFC 7.0이상, Worker Thread인 경우). 이것은 6.0과 달라진 부분으로서 다른 스레드에서는 AfxGetMainWnd 함수를 쓸때 주의를 기울여야 함을 뜻한다. 소스 호환성이 사라질 수 있다.