最近在網上看到一些關於在文檔類,視圖類,框架類,應用程序類,自定義類中獲取其它四個類的方法,現總結如下:
GET App
AfxGetInstanceHandle()
AfxGetApp()
GET Frame->View->Document
SDI AfxGetMainWnd() -> GetActiveView() -> GetDocument()
MDI AfxGetMainWnd() -> MDIGetActive() -> GetActiveView() -> GetDocument()
GET Menu
CMenu *pMenu=AfxGetApp()->m_pMainWnd->GetMenu();
GET ToolBar,StatusBar
(CMainFrame *)GetParent()->m_wndToolBar;
(CMainFrame *)GetParent()->m_wndStatusBar;
CStatusBar * pStatusBa=(CStatusBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_STATUS_BAR);
CToolBar * pToolBar=(CtoolBar *)AfxGetMainWnd()->GetDescendantWindow(AFX_IDW_TOOLBAR);
Get View from Document
GetFirstViewPosition 和 GetNextView 函數得到指針。
最後提醒:
在提取到各個句柄之後,因為初次提取的都是標准類句柄,所以,在使用時要注意將標准句柄轉換成自己的類的句柄。
((CMyApp*)AfxGetApp())->XXXX();//這的xxxx()就是你定義的類中間的成員。