11.14

신승빈·2022년 11월 14일
0

KGCA 수업

목록 보기
68/128

MFC

Game Resource Tool을 쉽게 만들기 위해 MFC를 이용
MFC의 자세한 기능보다는 필요한 기능을 위한 역할
MFC 역시 Window Application이기 때문에, 기존의 DX에 Window Handle만 넘겨주고, 그 외에 Window설정을 수행하면 동일하게 작동할 수 있음

CWinAppEx theApp

유일한 Window 객체
theApp을 통해 Window에 접근할 수 있음

WindowHandle

Frame->View->Doc 구조로 이루어져 있음

CMainFrame* frame = (CMainFrame*)AfxGetMainWnd();
CView* view = frame->GetActiveView();
view->m_hWnd;	// Window Handle

MFC의 Message와 Event

Window Procedure에서 처리하는 Message와 Event를 위해 함수가 제공 됨

클래스뷰->속성->메시지/이벤트를 통해 원하는 시점 처리 가능
각 작업 처리 전 필수적으로 수행해야 하는 작업이 있을 수 있으므로 수작업으로 직접 함수를 overriding하기 보다는 위 방식으로 접근하는 것이 좋음

Resize

CView::OnSize()를 통해 WM_size 메시지 처리 가능

Frame-Render

CWinAppEx::OnIdle()을 통해 유휴작업 중 Frame-Render작업 처리 가능
단, OnIdle함수는 Message가 없는 중에는 처리가 되지 않으므로 항상 return true처리

Reference : https://learn.microsoft.com/ko-kr/cpp/mfc/onidle-member-function?view=msvc-170

PreCompiledHeader

MFC는 PCH를 사용하므로 MFC폴더에 추가되는 cpp는 모두 최상단에 #include "pch.h"필수

추가 주의 사항 : https://hutsori.tistory.com/48

MFC 주의사항

당연하다면 당연한 결과이긴 한데, MFC를 사용할 경우 Library에서 winMain이 정의되어있으면 명시적으로 선언한 winMain이 실행된다

MFC가 아닌 직접 생성 시

MFC를 통해서 생성 시

MFC에서는 사용예정인 객체를 미리 초기화하는 것으로 보임. 단순히 nullptr로 생성 여부를 판단하면 문제가 발생

profile
이상을 길잡이 삼아 로망을 추구합니다.

0개의 댓글