MFC/MFC클라이언트

SDI 각 클래스 접근 방식과 역할

season97 2025. 3. 7. 13:44
728x90
반응형

# 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에 다 때려박지 마라. 기능은 작동하겠지만,,,, 적절하지 않다... 화장실에서 밥을먹고 거실에서 볼일보고 안방에서 샤워하고 이런느낌이다. 위 내용들을 계속 반복해서 인지하고 코딩하자

 

 

 

 

728x90
반응형