블로그 이미지
frostguy

카테고리

분류 전체보기 (48)
사진 (3)
Study (40)
IT (3)
Total143,121
Today8
Yesterday28

'GetMainWnd'에 해당되는 글 1건

  1. 2009.07.27 AfxGetMainWnd()에서 문제가 발생할 경우 (1)
-AfxGetApp 
 AfxGetApp() 전역 함수를 호출하게 되면 MFC 응용프로그램의 최초에 생성된 스레드의 app 를 반환해 준다. 

 - AfxGetMainWnd AfxGetMainWnd() 
 MFC 전역 함수는 현재 스레드의 메인 윈도우 핸들을 리턴한다.
// AfxGetMainWnd() 함수의 원형
_AFXWIN_INLINE CWnd* AFXAPI AfxGetMainWnd()
{
    CWinThread* pThread = AfxGetThread();
    return pThread != NULL ? pThread->GetMainWnd() : NULL;
}


현재 스레드의 메인 윈도우의 핸들을 부르는 것이기 때문에
스레드를 사용하는 프로그램에서는 원하지 않은 결과를 리턴할 수 있다.

즉, 다른 스레드에서 이 함수를 호출할 경우 올바른 MainWnd 를 호출할 수 없게 되는 것이다.

해결방법 : 
AfxGetMainWnd()  // 대신
AfxGetApp()->GetMainWnd()// 를 사용
Posted by frostguy

최근에 달린 댓글

글 보관함