MFC와 유사한 Win32 API 코드 분석을 해보자. 절대 깊이 분석하지는 말자.

wWinMain
윈도우 API에서는 wWinMain()이 어플리케이션의 시작이다. 이 함수가 return 하면 종료된다.
wWinMain이 시작하자 마자 class 등록을 한다.
MyRegisterClass

윈도우라고 하는 것은 몇몇 속성들을 가지고 있다. 속성 중에 class가 있다. 여기서 윈도우 class는 종류라고 생각하면된다. 컴퓨터 언어의 class와는 전혀 다르다.
새로 생긴 윈도우(창)는 자신만의 고유 종류를 OS에 등록하게 된다. 이때 등록하려면 다양한 정보를 제공해야한다. 해당 작업이 끝나면 어플리케이션 초기화를 수행한다.

InitInstance
MS 오피스를 사용한다고 하자. 이거를 설치하고 난 후에 사용을 한다. 즉 실행을 할 것이다. 설치는 한번만 하지만 실행은 여러번 가능하다.
프로그램을 실행해서 하나의 프로세스로 잡혀가지고 작업 관리자에 뜨게 될 것이다. 즉 여러 문서 프로그램이 뜨면 각각의 프로세스의 관리적 측면에서의 초기화를 실행하는 것이다.
While()

이게 Main Message Loop이다. Message Queue가 나오게 된다. 모든 메시지 루프가 하는일은 큐에서 하나씩 메시지를 인출해서 처리 즉 Call back 한다.
MSG msg

Message Queue 에서 message를 한개 꺼내와서 while의 구조체에 저장한다.
DispatchMessage
메시지의 Callback이 일어난다. 그 후 처리가 일어나고 프로그램이 끝날때까지 계속 반복한다.
MyRegisterClass

lpfnWndPorc가 중요하다.
callback 처리를 담당할 함수 주소가 등록된다. 즉 Call back 될 함수이다.
WndProc

기본적으로 Message는 unsinged int 이다. 스위치 케이스를 잔뜩 있다. 그때마다 32bit 파라미터가 최대 두개씩 넘어온다.
이들은 call back 된다. 언제? DispatchMessage가 돌아갈때이다.
이때 스위치 케이스에 들어가는 message들은 200개가 넘어간다.. 전부다 외울 필요는 없다..
WM_COMMAND
윈도우 창에 있는 버튼이나 메뉴같은거 고르면 발생하는 메시지-> 뭐가 눌리거나 선택됐는지 확인
WM_PAINT
렌더링 관련된거다..
WM_DESTROY
윈도우가 화면에 보이고 해당 윈도우 창의 닫기 버튼을 누르면 WM_CLOSE 가 들어온다. 이는 화면에서 안보이게 하고 DESTORY가 와야 완전히 종료된다.
PostQuitMessage로 인해 WM_QUIT가 발생한다. QUIT가 발생하면 while문이 false return을 하여 끝나고 종료가 된다.
[출처]https://www.youtube.com/watch?v=V9nwIepvPWc&list=PLXvgR_grOs1CyJDnWeUTqbmKG1VFQM72e&index=4
'IT잡다 > MFC' 카테고리의 다른 글
| MFC(4) MFC SDI 프로그램 기본 구조 1 (0) | 2025.01.16 |
|---|---|
| MFC(2) - Visual Studio Community 2022 설치 & 개발환경 (0) | 2025.01.13 |
| MFC(1) (0) | 2025.01.13 |