MFC (microsoft foundation class)
- 개발 단시 이름은 afx(applicaiton framework)
가장 간단한 프로그래밍
#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
- 테스트를 거친 완벽하지만 아무 것도 하지 않는 Application Framework 제공
- 상속 받고, 재정의하여 원하는 프로그램 개발