뷰(View) 동적으로 변경하기
- CCreateContext 클래스
- Base 클래스를 가지지 않음.
- 구조체로서 Frame 윈도우를 생성하고 document와 View가 연관되어질 때 사용하는 클래스
- 윈도우가 생성될 때 이 구조체의 값들은 document와 view를 구성하는 component을 연결하기 위한 정보를 제공
- RUNTIME_CLASS 이용
- 지정하는 클래스에 대한 CRuntimeClass 구조체의 포인터를 리턴
- DECLARE_DYNAMIC, DECLARE_DYNCREATE, DECLARE_SERIAL 매크로에 의해 선언된 CObject 파생 클래스만이 CRuntineClass 구조체 포인터를 리턴
BOOL CMainFrame::ChangeView() { //Set MultiDownFormView => CView 상속 클래스 CRuntimeClass *pClass = RUNTIME_CLASS(CMultiDownFormView); CView *pOldView = GetActiveView(); CDocument *pDocument = pOldView->GetDocument(); CCreateContext context; context.m_pLastView = NULL; context.m_pCurrentDoc = pDocument; context.m_pNewViewClass = pClass; context.m_pNewDocTemplate = pDocument ? pDocument->GetDocTemplate() : NULL; context.m_pCurrentFrame = this; CView *pNewView = STATIC_DOWNCAST(CView, CreateView(&context)); pNewView->OnInitialUpdate(); SetActiveView(pNewView); pNewView->ShowWindow(SW_SHOW); RecalcLayout(); return TRUE; }
주의할 점 View를 Extension DLL로 만들어 사용하는 경우 |
'MFC' 카테고리의 다른 글
MFC에서 Microsoft Excel 워크시트를 포함시키고 자동화하는 방법 (2) | 2008.09.10 |
---|---|
세 방향 분할 윈도우 (1) | 2008.09.10 |
기본(일반, regular) MFC Dll 에서 다이얼로그 박스 등 로딩시 응용프로그램에서 메시지 보내주는 법 (1) | 2008.09.08 |
MFC 모든 헤더와 라이브러리 설명 [1] - 헤더설명 (0) | 2008.09.06 |
MFC 모든 헤더와 라이브러리 설명 [2] - 런타임라이브러리 한글 번역 (0) | 2008.09.06 |
msdn - 확장 dll 설명 (1) | 2008.09.06 |
protected 속성으로 런타임클래스를 사용해라?....고찰 (1) | 2008.09.05 |