MFC (microsoft foundation class)

가장 간단한 프로그래밍

#include <afxwin.h> //MFC 애플리케이션에 필요한 핵심 헤더 파일
CWinApp app; //CWinApp 클래스의 객체인 **app**를 생성합니다.

상속 및 재정의

#include <afxwin.h>
//CWinApp app;  // 반드시 주석 처리할 것!!!!!!

class MyApp : public CWinApp { // 상속 받아서
public:
	virtual BOOL InitInstance();
};

BOOL MyApp::InitInstance() { // 재정의 한다
	AfxMessageBox(L"파생 클래스의 InitInstance() 재정의");

	return TRUE;
}

MyApp app;

window 생성

#include <afxwin.h>  // MFC 라이브러리의 핵심 헤더 파일

// CWinApp 클래스에서 파생된 MyApp 객체를 직접 생성해야 하므로, 
// 아래와 같이 주석 처리함 (MFC 애플리케이션에서는 전역 CWinApp 객체 생성 시 오류 발생 가능)

// CWinApp app;  // 반드시 주석 처리할 것!!!!!!

// MyApp 클래스는 CWinApp을 **상속**하여 애플리케이션의 동작을 관리
class MyApp : public CWinApp {  // CWinApp에서 상속받음
public:
    virtual BOOL InitInstance();  // InitInstance()를 **재정의**하여 초기화 작업 수행
};

// CMainWnd 클래스는 CFrameWnd를 **상속**하여 메인 윈도우 창 생성과 동작을 정의
class CMainWnd : public CFrameWnd {  // CFrameWnd에서 상속받음
public:
    CMainWnd();  // 생성자에서 창 생성 작업 수행
};

// MyApp 클래스의 InitInstance() 함수 재정의
// 프로그램이 실행될 때 초기화 작업을 수행하도록 설정
BOOL MyApp::InitInstance() {  // CWinApp의 InitInstance()를 **재정의**
    // 기본 메시지 박스 출력 코드 (사용자 정의 가능)
    // AfxMessageBox(L"파생 클래스의 InitInstance() 재정의");

    // 메인 윈도우 객체를 생성하고 화면에 표시하는 작업
    m_pMainWnd = new CMainWnd;  // CMainWnd 객체를 생성하여 m_pMainWnd에 연결
    m_pMainWnd->ShowWindow(m_nCmdShow);  // 윈도우를 화면에 표시
    m_pMainWnd->UpdateWindow();  // 윈도우를 업데이트하여 그리기

    return TRUE;  // 프로그램이 정상적으로 초기화되었음을 반환
}

// CMainWnd 생성자에서 Create() 함수를 통해 메인 윈도우를 생성
CMainWnd::CMainWnd() {  // CFrameWnd 생성자 **재정의**
    Create(NULL, L"GUI 프로그래밍");  // 기본 창 타이틀 설정
}

// MyApp 클래스의 객체인 app 생성
// 프로그램 실행 시 이 객체가 초기화되고 메인 윈도우를 띄움
MyApp app;  // CWinApp을 **상속**받은 MyApp의 객체 생성 (프로그램의 진입점)

⭐MFC, iOS, Android, WinForms, WPF 등 모든 Framework