獲得窗口和其他類指針的方法

獲得CWinApp:
 -在CMainFrame,CChildFrame,CDocument,CView中直接調用AfxGetApp()或用theApp
 -在其它類中只能用AfxGetApp()
獲得CMainFrame:
 -在CMinApp中用AfxGetMainWnd()或者m_pMainWnd
 -在CChildFrame中可用GetParentFrame()
 -在其它類中用AfxGetMainWnd()
獲得CChildFrame:
 -在CView中用GetParentFrame()
 -在CMainFrame中用MDIGetActive()或GetActiveFrame()
 -在其它類中用AfxGetMainWnd()->MDIGetActive()或AfxGetMainWnd()->GetActiveFrame()
獲得CDocument:
 -在CView中用GetDocument()
 -在CChildFrame中用GetActiveView()->GetDocument()
 -在CMainFrame中用
  -if SDI:GetActiveView()->GetDocument()
  -if MDI:MDIGetActive()->GetActiveView()->GetDocument()
 -在其它類中
  -if SDI:AfxGetMainWnd()->GetActiveView()->GetDocument()
  -if MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView()->GetDocument()
獲得CView:
 -在CDocument中 POSITION pos = GetFirstViewPosition();GetNextView(pos)
 -在CChildFrame中 GetActiveView()
 -在CMainFrame中
  -if SDI:GetActiveView()
  -if MDI:MDIGetActive()->GetActiveView()
 -在其它類中
  -if SDI:AfxGetMainWnd()->GetActiveView()
  -if MDI:AfxGetMainWnd()->MDIGetActive()->GetActiveView()

更加直接的方法是通過全局App指針
1)通過AfxGetApp()得到當前的App對象;
2)通過AfxGetMainWnd()得到主窗口;
3)通過CMDIFrameWnd::GetActiveFrame得到當前活動窗口;
4)通過GetNextWindow()遍例所有的子窗口;(如果要得到你想要的子窗口,可以通過特定的成員變量來標誌);
5) 通過CWinApp::GetFirstDocTemplatePostion()以及CWinApp::GetNextDocTemplate()的組 合應用來遍歷所有的DocTemplate對象,並且用CDocTemplate::GetDocString()來判斷當前得到的文檔莫板對象是哪個。
6) 通過CDocTemplate::GetFirstDocPosition()以及CDocTemplate的GetNextDoc()組合來遍歷所有的 該模板的文檔對象,並用CDocument::GetDocTemplate()來得到文檔模板,用CDocment::GetTitle() 或者 GetPathName()來判斷當前的文檔是哪個。
7)通過CDocuemt的GetFirstViewPositon()以及GetNextView()來遍歷視圖對象,一般通過訪問View的成員變量來區別各個視圖;通過CView::GetDocument()來得到文檔對象;
8)Frame->View: 通過GetActiveView方法;
9)Frame->Doc:通過GetActiveDocument();
10)View->Frame:GetParentFrame();
11)View->Doc:GetDocuemt()//前面已經說了。
12)Doc->View:前面說了;
13)Doc->Frame:不知道有沒有很直接的方法。 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章