前人在CSDN總結的,曾經(jīng)幫助過我,整理總結一下,希望也能幫助一下別人。
|
獲得CWinApp
|
獲得CMainFrame
|
獲得CChildFrame
|
獲得CDocument
|
獲得CView
|
在CWinApp中 |
|
AfxGetMainWnd()
m_pMainWnd
|
AfxGetMainWnd()->MDIGetActive()
AfxGetMainWnd()->GetActiveFrame()
|
SDI:AfxGetMainWnd()->GetActiveView()->GetDocument()
MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView()->GetDocument()
|
SDI:AfxGetMainWnd()->GetActiveView() MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView() |
在CMainFrame中 |
AfxGetApp()
theApp
|
|
MDIGetActive()
GetActiveFrame()
|
SDI:GetActiveView()->GetDocument() MDI:MDIGetActive()->GetActiveView()->GetDocument() |
SDI:GetActiveView() MDI:MDIGetActive()->GetActiveView() |
在CChildFrame中 |
AfxGetApp()
theApp
|
GetParentFrame() |
|
GetActiveView()->GetDocument() |
GetActiveView() |
在CDocument中 |
AfxGetApp()
theApp
|
AfxGetMainWnd() |
AfxGetMainWnd()->MDIGetActive()
AfxGetMainWnd()->GetActiveFrame()
|
|
POSITION pos = GetFirstViewPosition();GetNextView(pos) |
在CView中 |
AfxGetApp()
theApp
|
AfxGetMainWnd() |
GetParentFrame() |
GetDocument() |
|
在其他類中 |
AfxGetApp()
|
AfxGetMainWnd() |
AfxGetMainWnd()->MDIGetActive()
AfxGetMainWnd()->GetActiveFrame()
|
SDI:AfxGetMainWnd()->GetActiveView()->GetDocument()
MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView()->GetDocument()
|
SDI:AfxGetMainWnd()->GetActiveView() MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView() |
理一理MFC的這幾個類的關系,可以很容易明白上面的這些亂七八糟的邏輯。
App是應用域,所有的域中的東西都可以通過全局函數(shù)訪問到它。
MainFrame是主框架,也基本可以用全局函數(shù)訪問到。
MainFrame下是若干個ChildFrame,ChildFrame中若干個View和Document(可能不成對),ChildFrame管理著View,View和Document進行互操作。
因此整體框架就出來了,一般除了直接應用的關系都可以通過MainFrame-->Active ChildFrame-->Active View-->Document這條線進行訪問,這應該叫什么來自?萬能方法吧^_^。
恕我懶惰,不愿意畫一個更詳細的圖解,湊合著看看吧。
文章來源:
http://www.cnblogs.com/duguguiyu/archive/2007/06/22/792511.html
posted on 2007-06-22 01:33
duguguiyu 閱讀(488)
評論(0) 編輯 收藏 引用 所屬分類:
MFC