AfxGetMainWnd 2

[MFC] AfxGetApp() 와 AfxGetMainWnd()

윈도우즈 프로그램의 기본적인 실행 구조는 다음과 같다. 실행파일을 실행 시키면 하나의 프로세스가 생성된다. 프로세스는 단독으로 수행될 수 없고 스레드에 의해 수행된다. 스레드는 프로세스의 메모리 공간을 수행할 책임을 갖게 된다. 프로세스는 하나 이상의 스레드를 갖으면 최초의 스레드를 Primary Thread 라고 부른다. MFC로 만든 응용 프로그램 역시 윈도우즈 프로그램이므로 하나 이상의 스레드를 갖는다. Primary Thread 역할을 하는 것으 CWinApp 클래스의 파생클래스인 CXXApp 클래스가 스레드를 생성한다. CToolApp 같은 최종 보여지는 클래스를 말한다. 자세히 말하면 MFC 응용프로그램의 유일한 전역 객체인 CXXApp의 객체가 진입점 함수(WinMain, wWinMain) ..

MFC 2022.01.05

[MFC] 윈도우창 관련 함수(클라이언트창 크기 셋팅)

AfxGetMainWnd(); 함수는 현재 스레드의 메인 윈도우 핸들을 리턴한다. 전역함수로 선언 되어있다. 현재스레드의 메인 윈도우의 핸들을 부르는 것이기 때문에 스레드를 사용하는 프로그램에서는 원하지 않은 결과를 리턴할 수 있다. 즉, 다른 스레드에서 이 함수를 호출 할 경우 올바른 MainWnd를 호출할 수 없게 된다. 해결 방법 : AfxGetMainWnd() // 대신 AfxGetApp()->GetMainWnd()// 를 사용 참고: https://frostguy.tistory.com/37 AfxGetMainWnd()에서 문제가 발생할 경우 -AfxGetApp AfxGetApp() 전역 함수를 호출하게 되면 MFC 응용프로그램의 최초에 생성된 스레드의 app 를 반환해 준다. - AfxGetMa..

MFC 2021.12.24