# SDI프로젝트를 생성하고 나면 ... (Single Document Interface)
ㆍ 이런 클래스들이 함께 생성된다.
# 구조를 시각화 해서 보자
ㆍ Data는 Document 부분에서 관리해준다
MFC의 프로젝트는 메인이 없다... 객체 생성 순서를 한번 보자
ㆍ AfxWinMain : 이게 메인이다. 근데 MFC에선 이게 숨겨져있고 이부분은 수정할 수 없다. 시작점이라고 생각하자
ㆍ CWinApp : 모든 어플리케이션 클래스의 파생 클래스.. 시작되면 InitInstance가 호출되고 Run이나온 후 ExitInstance로 끝남
ㆍ CWinApp 는 theApp이라는 전역변수로 이미 선언되어있다.
코딩은 어디에 가장 많이할까?? : InitInstance()와 ExitInstance()에서 제일 많이 한다.
ㆍ 순서는 오른쪽 그림처럼 된다고 생각하자. 큰 흐름을 보자
▶ 각 클래스의 접근 방법과 어디에 어떻게 코딩할것인가?
1. CWinApp
ㆍ thApp , AfxGetApp()를 통해 접근 //afx라는건 전역이라는 뜻으로 이해하자
ㆍ 응용 프로그램 자체와 관련된 코드들은 이곳에 작성한다.
ㆍ 예를들어 뭐 두번 실행되게 하고싶어 이런거
2. CDocument
ㆍ CFrameWnd::GetActiveDocument()를 통해 접근
ㆍ Data를 다루는 일들은 여기서 코딩한다. Frame이나View에 넣어도 되지만, 그 구조가 적절한지 생각해보자
ㆍ
3. CFrameWnd
ㆍ AfxGetMainWnd()를 통해 접근
ㆍ 눈에 보이는 시간 내내 특정 화면과 상관없이 계속 적용해야 하는 부분은 이곳에 코딩하자
ㆍ 다른 클래스로 접근하기 위해 이 클래스가 필요한듯?
4. CView
ㆍ CFrameWnd::GetActiveView() : Frame에 접근 하고 GetActiveView를 호출해서 얘한테 접근해야 되겠군
ㆍ 어떤 메뉴를 선택했을때, 특히 이 메뉴가 화면하고 관련이 있을때
# 이 모든걸 그림으로 정리하면 아래와 같다
이 부분만 때서 때로 보자면, Data를 뭐 html로 보여줄수도있고 text로 보여줄 수도 있고 img로 보여줄 수도 있고 하기때문에 List로 관리한다고 생각하자
ㆍ 코딩을 많이 하게될 부분은 View클래스 일것이다.... 메뉴-> 기능 화면기능... 등등
ㆍ MainFrame에 다 때려박지 마라. 기능은 작동하겠지만,,,, 적절하지 않다... 화장실에서 밥을먹고 거실에서 볼일보고 안방에서 샤워하고 이런느낌이다. 위 내용들을 계속 반복해서 인지하고 코딩하자
'MFC > MFC클라이언트' 카테고리의 다른 글
메시지 맵과 핸들러 (0) | 2025.03.07 |
---|---|
SDI 프레임워크 분석과 순서 (0) | 2025.03.07 |
CWnd와 윈도우 속성, 윈도우 관계 ,좌표계 (1) | 2025.03.06 |
윈도우 기초 이론 - 솔루션, 프로젝트, 리소스 (0) | 2025.03.06 |
CString 과 CFile (문자열 편하게 처리하기) (0) | 2025.03.06 |