MFC框架各部分指標獲取方式

cyd1989930發表於2015-03-06

MFC框架各部分指標獲取方式

前人在CSDN總結的,曾經幫助過我,整理總結一下,希望也能幫助一下別人。
    

 

獲得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是應用域,所有的域中的東西都可以通過全域性函式訪問到它。
MainFrame是主框架,也基本可以用全域性函式訪問到。
MainFrame下是若干個ChildFrame,ChildFrame中若干個View和Document(可能不成對),ChildFrame管理著View,View和Document進行互操作。
因此整體框架就出來了,一般除了直接應用的關係都可以通過MainFrame-->Active ChildFrame-->Active View-->Document這條線進行訪問,這應該

相關文章