架構、文檔、視圖類之間的調用關係
來源:互聯網
上載者:User
1、主架構(CFrameWnd)中訪問視圖(CView)
CView* GetActiveView() const;
通常定義的視圖為CView的衍生類別,在調用自訂視圖對象的方法時
應該這樣寫:((CMouseKeyView*)GetActiveView())->MyFunc();
2、主架構(CFrameWnd)中訪問文檔(CDocument)
GetActiveDocument,返回CDocument對象;
3、在視圖(CView)中訪問文檔(CDocument)
inline CMouseKeyDoc* CMouseKeyView::GetDocument()
{return (CMouseKeyDoc*)m_pDocument;}
4、在視圖(CView)中訪問架構(CFrameWnd)
CFrameWnd* GetParentFrame() const;
5、在文檔(CDocument)中訪問架構(CFrameWnd)
CWnd* AfxGetMainWnd();
CWnd* AfxGetApp()->m_pMainWnd;
6、在文檔(CDocument)中訪問視圖(CView)
UpdateAllViews
功能:通知所有的視圖文檔已被修改的資訊
原型:
void UpdateAllViews(
CView* pSender, // 要更新的視圖指標,如果希望更新所有視
圖,將此參數設為NULL
LPARAM lHint=0L, // 包含更改訊息的通知
CObject* pHint=NULL // 保管更改訊息的對象
}
7、在其他類中訪問文檔類(CDocument)
CDocument* GetDocument()
{
CFrameWnd* frm=(CFrameWnd*)::AfxGetMainWnd();
ASSERT(frm);
CDocument* pDoc=frm->GetActiveDocument();
ASSERT(pDoc);
ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CMouseKeyDoc)));
return (CMouseKeyDoc*)pDoc;
}