반응형

Doc/View를 없애기 위해서는 우선 App과의 연결고리를 끊어야만 한다.



1. xxx.cpp(CWinApp)파일로 이동


 BOOL CWinApp::InitInstance()

{

....

// 응용 프로그램의 문서 템플릿을 등록합니다. 문서 템플릿은

//  문서, 프레임 창 및 뷰 사이의 연결 역할을 합니다.

CSingleDocTemplate* pDocTemplate;

pDocTemplate = new CSingleDocTemplate(

IDR_MAINFRAME,

RUNTIME_CLASS(CFTPServerDoc),

RUNTIME_CLASS(CMainFrame),       // 주 SDI 프레임 창입니다.

RUNTIME_CLASS(CFTPServerView));

if (!pDocTemplate)

return FALSE;

AddDocTemplate(pDocTemplate);

......

}


2. 상위 코드를 삭제한다. (필자는 만약을 대비하여 주석처리 하였다.)


3. 삭제한 코드 아래에 코드 추가.


 BOOL CWinApp::InitInstance()

{

....

// 응용 프로그램의 문서 템플릿을 등록합니다. 문서 템플릿은

//  문서, 프레임 창 및 뷰 사이의 연결 역할을 합니다.

// CSingleDocTemplate* pDocTemplate;

// pDocTemplate = new CSingleDocTemplate(

// IDR_MAINFRAME,

// RUNTIME_CLASS(CFTPServerDoc),

// RUNTIME_CLASS(CMainFrame),       // 주 SDI 프레임 창입니다.

// RUNTIME_CLASS(CFTPServerView));

// if (!pDocTemplate)

// return FALSE;

// AddDocTemplate(pDocTemplate);


// 추가된 코드(MainFrm)

CMainFrame* pMainFrame = new CMainFrame();

m_pMainWnd = pMainFrame;

pMainFrame->LoadFrame(IDR_MAINFRAME);

.....

}


4. CWinApp.cpp 상단에 include된 Doc/View 헤더파일 삭제. 

(필자는 만약을 대비하여 주석처리 하였다.)


#include "stdafx.h"

#include "afxwinappex.h"

#include "afxdialogex.h"

#include "FTPServer.h"

#include "MainFrm.h"


// #include "FTPServerDoc.h"

// #include "FTPServerView.h"


5. Doc/View 파일(형광펜 부분) 삭제. (필자는 만약을 대비하여 삭제하지 않았다.)



6. 완료.



7. 추가 - View를 없앤 후 작업을 위하여 FormView를 MainFrm에 삽입하여 보자.


1) 클래스마법사 -> 클래스추가 실행

- 클래스 이름 : 센스것.

- 기본 클래스 : CFormView 선택

- 대화 상자 ID : 자동으로 설정되는 경우가 있으나, 안될 경우 IDD_xxxx의 형식으로 이름 기입.

- 나머지 자동


2) 리소스 -> Dialog에 해당 FormView가 설정됨을 확인할 수 있다.

!!!!! 여기서 주의!!

     - 클래스 마법사를 이용하여 바로 Dialog와 클래스를 동시에 만드는 경우 말고 Dialog 추가 후 해당 Dialog를 타고 클래스를 만드는 사람이 있다.(필자포함...) 이 경우 Dialog가 FormView가 아닌 기본 Dialog로 만들어지기 때문에 해당 Dialog를 타고 클래스를 추가할 경우 FormView를 선택하여도 실행 시 에러가 난다. 이는 생성한 Dialog가 FormView의 역할을 소화하기위한 속성 변경이 제외되었기 때문이다. 이럴 경우 새로만둔 FormView용 Dialog의 속성에 들어가서 "Border : None / Style : Child"로 반드시 설정해야만 한다.


3) MainFrm.cpp의 OnCreate에 FormView를 삽입하기 위한 코드를 넣음.


int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)\

{

......

CCreateContext ccx;

ccx.m_pNewViewClass = RUNTIME_CLASS(FromView연동 Class명);

m_pMainView = DYNAMIC_DOWNCAST(FromView연동 Class명, CreateView(&ccx));

m_pMainView->ShowWindow(SW_SHOW);

m_pMainView->OnInitialUpdate();

SetActiveView(m_pMainView);

m_pMainView->ResizeParentToFit(FALSE);

....

}


8. 완성




반응형
Posted by tislqhf

블로그 이미지
개인적인 공부자료 정리하는 공간
tislqhf

태그목록

공지사항

Yesterday
Today
Total

달력

 « |  » 2025.2
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함