Program Language/API | MFC
[MFC] MDI에서 새창 열기
야곰야곰+책벌레
2021. 5. 20. 17:20
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
반응형