[摘要]m_pViewActive->IsKindOf(RUNTIME_CLASS(CView))); return m_pViewActive;CframeWnd还有一个函数能取得当前活...
m_pViewActive->IsKindOf(RUNTIME_CLASS(CView)));
return m_pViewActive;
}
CframeWnd还有一个函数能取得当前活动的文档,它是通过活动视图间接得到的:
CDocument* CFrameWnd::GetActiveDocument()
{
ASSERT_VALID(this);
CView* pView = GetActiveView();
if (pView != NULL)
return pView->GetDocument();
return NULL;
}
(五)MDI主窗口和子窗口之间的关联:
在MDI子窗口创建的时候,指定了它与MDI之间的关系:
BOOL CMDIChildWnd::Create(LPCTSTR lpszClassName,
LPCTSTR lpszWindowName, DWORD dwStyle,
const RECT& rect, CMDIFrameWnd* pParentWnd,
CCreateContext* pContext)
{
if (pParentWnd == NULL)
{
CWnd* pMainWnd = AfxGetThread()->m_pMainWnd;
ASSERT(pMainWnd != NULL);
ASSERT_KINDOF(CMDIFrameWnd, pMainWnd);
pParentWnd = (CMDIFrameWnd*)pMainWnd;
}
……
pParentWnd->RecalcLayout();
CREATESTRUCT cs;
……
//指定了所属的MDI子窗口
cs.hwndParent = pParentWnd->m_hWnd;
……
cs.lpCreateParams = (LPVOID)pContext;
if (!PreCreateWindow(cs))
{
PostNcDestroy();
return FALSE;
}
MDICREATESTRUCT mcs;
……
mcs.style = cs.style & ~(WS_MAXIMIZE
关键词:文档/视图结构中的各个局部是如何联系到一起的