Document.h MFC룰에 따라 Document의 헤더에 저장한다

 CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd(); //AfxGetMainWnd() -> MainWnd의 주소값을 가져옴
 CIvyClubDoc *pDoc = (CIvyClubDoc *)pFrame->GetActiveDocument(); //GetActiveDocument() AfxGetMainWnd로 가져온 MainFrame에서 활성화된 Document의 주소를 가져오는 함수. 이 주소를 가져다가 pDoc에 넣어주면 결국 활성화된 Doc의 주소를 가져올 수 있고 이것을 이용하여 호출


예제
void CTrash::f_Print()
{
 CMainFrame *pFrame = (CMainFrame *)AfxGetMainWnd();
 CIvyClubDoc *pDoc = (CIvyClubDoc *)pFrame->GetActiveDocument();
 
 ITEM *pITEM = pDoc->GetITEM();
 
 int counter = pDoc->GetCounter();
 int i = m_combo_SN.GetCurSel();
 
 CString val;
 
 m_Trash.DeleteAllItems();
 
 m_Trash.InsertItem(0, "85", 0);
 val.Format("%d", pITEM[i].s85[0]);
 m_Trash.SetItemText(0, 1, val);
 val.Format("%d", pITEM[i].s85[1]);
 m_Trash.SetItemText(0, 2, val);
 val.Format("%d", pITEM[i].s85[2]);
 m_Trash.SetItemText(0, 3, val);
 val.Format("%d", pITEM[i].s85[3]);
 m_Trash.SetItemText(0, 4, val);
 
 m_Trash.InsertItem(1, "90", 0);
 val.Format("%d", pITEM[i].s90[0]);
 m_Trash.SetItemText(1, 1, val);
 val.Format("%d", pITEM[i].s90[1]);
 m_Trash.SetItemText(1, 2, val);
 val.Format("%d", pITEM[i].s90[2]);
 m_Trash.SetItemText(1, 3, val);
 val.Format("%d", pITEM[i].s90[3]);
 m_Trash.SetItemText(1, 4, val);
 
 m_Trash.InsertItem(2, "95", 0);
 val.Format("%d", pITEM[i].s95[0]);
 m_Trash.SetItemText(2, 1, val);
 val.Format("%d", pITEM[i].s95[1]);
 m_Trash.SetItemText(2, 2, val);
 val.Format("%d", pITEM[i].s95[2]);
 m_Trash.SetItemText(2, 3, val);
 val.Format("%d", pITEM[i].s95[3]);
 m_Trash.SetItemText(2, 4, val);
 
 m_Trash.InsertItem(3, "100", 0);
 val.Format("%d", pITEM[i].s100[0]);
 m_Trash.SetItemText(3, 1, val);
 val.Format("%d", pITEM[i].s100[1]);
 m_Trash.SetItemText(3, 2, val);
 val.Format("%d", pITEM[i].s100[2]);
 m_Trash.SetItemText(3, 3, val);
 val.Format("%d", pITEM[i].s100[3]);
 m_Trash.SetItemText(3, 4, val);
}

MFC 4대 구조(클래스)

- Document
- View
- Application
- MainFrame

MFC는 위의 4대 클래스를 기본 골격으로 한다(반드시 따를 필요는 없으며 그냥 C++처럼 짜도 그만이나 규약을 따르면 코드 가독성이나 공유성이 좋아진다)

일반적으로
Document에는 자료처리에 필요한 자료형, 구조체 등이 기술된다
View는 보여지는 부분으로 버튼을 그리거나 텍스트박스등을 그려넣고 눈에 보이는 부분이다
Application은 전면에 나오지 않고 각종 자료의 처리를 수행하는 부분이다
MainFrame은 메뉴나 화면의 조절(확대, 최소, 닫기, 스크롤바등)을 담당하며 4대 클래스를 제외한 클래스(또는 다이얼로그)등에서 Document의 데이터를 접근하기 위해서 먼저 접근하게 되는 클래스이다

+ Recent posts