728x90
1. 아키텍처
- 문서/뷰 아키텍처: MFC는 문서(Document)와 뷰(View)를 분리하여 애플리케이션의 데이터와 UI를 관리합니다. CDocument 클래스는 데이터와 비즈니스 로직을, CView 클래스는 사용자 인터페이스를 담당합니다.
- 윈도우 클래스: MFC에서 CWinApp 클래스를 상속하여 애플리케이션을 정의하고, CFrameWnd 클래스를 상속하여 프레임 윈도우를 생성합니다.
2. 메시지 맵
- 메시지 처리: MFC는 Windows 메시지를 처리하기 위해 메시지 맵을 사용합니다. ON_COMMAND, ON_WM_PAINT 등의 매크로를 사용하여 메시지를 처리하는 핸들러 함수를 정의합니다.
- 시스템 메시지: 예를 들어, WM_PAINT, WM_CLOSE, WM_SIZE 등의 메시지를 처리하여 애플리케이션의 동작을 정의합니다.
3. 다이얼로그
- 모달 및 모델리스 다이얼로그: MFC는 모달 다이얼로그(CDialog::DoModal())와 모델리스 다이얼로그를 지원합니다. 모달 다이얼로그는 사용자 입력을 기다리는 동안 다른 작업을 수행할 수 없습니다.
4. GDI(Graphics Device Interface)
- MFC는 GDI를 통해 그래픽을 그리는 기능을 제공합니다. CClientDC, CBrush, CPen 등을 사용하여 화면에 도형, 텍스트 등을 그릴 수 있습니다.
- 그리기 함수: TextOut(), Ellipse(), Rectangle() 등의 함수로 화면을 그립니다.
5. 파일 처리 및 직렬화
- CFile: 파일 입출력을 위한 클래스입니다. Open(), Read(), Write() 메서드를 사용하여 파일을 처리합니다.
- CArchive: 직렬화 클래스를 사용하여 객체의 상태를 파일에 저장하거나 파일에서 로드할 수 있습니다.
6. 컨트롤
- MFC는 다양한 UI 컨트롤(버튼, 편집 상자, 리스트 박스 등)을 제공합니다. 각 컨트롤은 해당 클래스를 사용하여 생성하고 조작합니다.
- 이벤트 처리: 각 컨트롤의 이벤트를 처리하기 위해 메시지 맵을 사용합니다.
7. 스레드 및 동기화
- CWinThread: MFC에서 스레드를 생성하고 관리하는 클래스입니다. AfxBeginThread() 함수로 새로운 스레드를 시작합니다.
- 동기화: CMutex, CSemaphore, CCriticalSection 등을 사용하여 스레드 간의 동기화를 관리합니다.
8. 리소스 관리
- MFC 애플리케이션은 리소스를 통해 메뉴, 다이얼로그, 아이콘 등을 관리합니다. CWinApp::LoadResource() 메서드를 사용하여 리소스를 로드합니다.
- 리소스 파일: .rc 파일을 사용하여 리소스를 정의합니다.
9. 이벤트 핸들링
- MFC는 사용자 입력(마우스 클릭, 키 입력 등)에 대한 이벤트를 처리하기 위해 메시지 핸들러를 제공합니다.
- 메시지 맵: 메시지 맵을 사용하여 특정 이벤트에 대한 처리 함수를 연결합니다.
10. 디버깅 및 오류 처리
- ASSERT: 프로그램의 가정이 틀렸을 때 오류를 검출하는 데 사용되는 매크로입니다.
- 예외 처리: MFC는 C++의 예외 처리 메커니즘을 지원하며, try/catch 블록을 사용하여 예외를 처리할 수 있습니다
728x90
'반도체 > MFC' 카테고리의 다른 글
[우주여행] 2. MFC란 무엇인가? (0) | 2024.12.17 |
---|---|
[우주여행] 1. C++의 세계로 첫 발을 내딛다! 🚀 (0) | 2024.12.17 |
6. MFC에서 많이 사용하는 함수들 (1) | 2024.08.20 |
5 .C++의 OnTimer MFC (2) | 2024.08.20 |
4. MFC 에서 enum개념 (1) | 2024.08.14 |