728x90
반응형
CDocTemplate* pTemplateDoc = theApp.m_pDocTemplate; // App에서 멤버 포인터를 가져온다.
pTemplateDoc->OpenDocumentFile(NULL); // 새창에 연다.
m_pDocTemplate = new CMultiDocTemplate(IDR_DBAppTYPE,
RUNTIME_CLASS(CDBAppDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CDBAppListView));
if (!m_pDocTemplate)
return FALSE;
AddDocTemplate(m_pDocTemplate);
MDI에서 새창을 여는 것은 App에 선언된 메시지를 이용하는 방법이 가장 간단하다.
CMainFrame에서 아래와 같이 적어주면 된다.
SendMessage(WM_COMMAND, ID_FILE_NEW, NULL);
다른 클래스에서 창을 새롭게 열고 싶다면 아래와 같다.
AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_NEW, NULL);
다른 방법으로는 App 파일에서 Frame을 처음 만들 때 사용하는 CMultiDocTemplate를 이용할 수 있다.
m_pDocTemplate = new CMultiDocTemplate(IDR_DBAppTYPE,
RUNTIME_CLASS(CDBAppDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CDBAppListView));
if (!m_pDocTemplate)
return FALSE;
AddDocTemplate(m_pDocTemplate);
pDocTemplate를 멤버 변수로 선언하고 App Class가 가지고 있게 한다. 그런 다음 프로그램에서 아래와 같이 호출하면 된다.
CDocTemplate* pTemplateDoc = theApp.m_pDocTemplate;
pTemplateDoc->OpenDocumentFile(NULL);
OpenDocumentFile에서 매개변수를 NULL 두면 새창으로 열기이며, Path를 지정하면 해당 파일을 읽어온다. 사실 여러 개의 도큐먼트를 열거나 선택해서 만들 때가 아니라면 메시지를 이용하는 편이 편하다.
728x90
반응형
'Program Language > API | MFC' 카테고리의 다른 글
[MFC] MDI에서 자식 창을 맨 앞으로 가져오기 (0) | 2021.05.21 |
---|---|
[MFC] MDI에서 시작 시 새 창 방지 코드 (0) | 2021.05.20 |
[MFC] 다이얼로그 캡션 변경 (0) | 2021.05.20 |
[MFC] MFC 컨트롤 서브클래싱 하기 (0) | 2021.05.19 |
[MFC] CDockingPane Class 사용하기 (0) | 2021.05.18 |