190718-2
MDI
SDI
1.CWinApp
2.CFrameWnd
3.CDocument
4.CView
MDI
1. CWinApp
2-1. CMDIFrameWnd
2-2. CMDIChildWnd
3. CDocument
4. CView
Document Template : 데이터에 따라서 틀이 만들어 지더라. 데이터에 따라서 뷰가 결정되고 외관의 틀이 결정되고 리소스가 결정되고...
BOOL CMDIApp::InitInstance()
// 애플리케이션의 문서 템플릿을 등록합니다. 문서 템플릿은
// 문서, 프레임 창 및 뷰 사이의 연결 역할을 합니다.
CMultiDocTemplate* pDocTemplate;
pDocTemplate = new CMultiDocTemplate(IDR_MDITYPE,
RUNTIME_CLASS(CMDIDoc),
RUNTIME_CLASS(CChildFrame), // 사용자 지정 MDI 자식 프레임입니다.
RUNTIME_CLASS(CMDIView));
if (!pDocTemplate)
return FALSE;
AddDocTemplate(pDocTemplate); // APP에 등록 해야 doc,frame, view 리소스가 작동할 수 있다.
모달리스는 프레임에 만든다. 프레임은 프로그램 도는 동안에는 있을 거니까.
[다중 도큐먼트 메뉴 템플릿]
리소스
프레임
128번 130번
우리도 리소스 아이디가 있어야한다.
기본적으로 메뉴와 툴바 (복사해서 만듬)
- 텍스트 뷰 뜰 때마다
App은 도큐먼트 템플릿을 리스트로 갖는다.
도큐먼트 템플릿은 다시 doc들을 리스트로 갖는다.
BOOL CDocinfoDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 여기에 추가 초기화 작업을 추가합니다.
int nDT = 0;
int nDoc = 0;
int nView = 0;
CWinApp* pApp = AfxGetApp();
POSITION posDT = pApp->GetFirstDocTemplatePosition();
while (posDT)
{
++nDT;
CDocTemplate* pDT = pApp->GetNextDocTemplate(posDT);
POSITION posDoc = pDT->GetFirstDocPosition();
while (posDoc) {
++nDoc;
CDocument* pDoc = pDT->GetNextDoc(posDoc);
POSITION posView = pDoc->GetFirstViewPosition();
while (posView)
{
++nView;
CView* pView = pDoc->GetNextView(posView);
}
}
}
m_nDT = nDT;
m_nDOC = nDoc;
m_nVIEW = nView;
UpdateData(FALSE);
return TRUE; // return TRUE unless you set the focus to a control
// 예외: OCX 속성 페이지는 FALSE를 반환해야 합니다.
}
void CMDIApp::OnMdi()
{
// TODO: 여기에 명령 처리기 코드를 추가합니다.
POSITION pos = GetFirstDocTemplatePosition();
CMultiDocTemplate* pDT = (CMultiDocTemplate*)GetNextDocTemplate(pos);
pDT->OpenDocumentFile(NULL);
}
void CMDIApp::OnText()
{
// TODO: 여기에 명령 처리기 코드를 추가합니다.
POSITION pos = GetFirstDocTemplatePosition();
GetNextDocTemplate(pos); // 텍스트 도큐먼트 템플릿으로 바꾸기 위해 한 번 더 호출
CMultiDocTemplate* pDT = (CMultiDocTemplate*)GetNextDocTemplate(pos);
pDT->OpenDocumentFile(NULL);
}
- 새창열기 따로다로 만든 코드
'MFC' 카테고리의 다른 글
[MFC] Template (템플릿) cpp 중요 문법 (0) | 2019.11.13 |
---|---|
[MFC] Worker Thread (워커 쓰레드) (0) | 2019.11.12 |
[MFC] 실행순서, DOC과 View 업데이트, 분할창에 사각형정보 다르게 (0) | 2019.11.10 |
Hide Show Controls Using the Button, List View, Draw Rectangle (0) | 2019.11.09 |
[MFC] Creating a square information move dialog (0) | 2019.11.08 |