CMainFrame是CApp类的主程序窗口(如果是选MDI或SDI结构的话),也就是程序的一个框架。CApp中如无特殊的要求不用加什么代码,CMainFrame中也是根据需要,如按照微软提供的框架也不需要加什么代码。
假设你是单文档单个VIEW的程序。那么:
1)CMainFrame:
2)CDoc:
3) CView:
-----------------
CWinApp * AfxGetApp()是一个全局函数,在任何地方都可以获得C***App类对象的指针.
1、//在C***App类中:
获得CMainFrame类对象的指针: CMainFrame* pMain=(CMainFrame*)CWinThread::m_pMainWnd;
获得C***View类对象的指针:
(假设只有一个视图,须通过CMainFrame)
获得C***Doc类对象的指针(须通过CMainFrame) C***Doc *pDoc=(C***Doc *)((CMainFrame*)m_pMainWnd)->CFrameWnd::GetActiveDocument();
2、
获得CMainFrame类对象的指针: CMainFrame* pMain=(CMainFrame*)CWnd::GetActiveWindow();
3、
获得CMainFrame类对象的指针:
CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd();
CMainFrame* pMain=(CMainFrame*)AfxGetApp()->m_pMainWnd;
获得C***View类对象的指针:
(假设只有一个视图,须通过CMainFrame)
C***View *pView=(C***View *)((CMainFrame*)AfxGetApp()->m_pMainWnd)->CFrameWnd::GetActiveView():
(假设有两个以上视图,以找寻C***View为例) POSITION pos=CDocument::GetFirstViewPosition();
while(pos != NULL)
{
}
4、
CMainFrame* pMain=(CMainFrame*)AfxGetMainWnd(); CMainFrame* pMain=(CMainFrame*)CWnd::GetParentFrame();
CMainFrame* pMain=(CMainFrame*)AfxGetApp()->m_pMainWnd;
获得C***Doc类对象的指针
C***Doc *pDoc= GetDocument();
1 在CFrameWnd::ActivateFrame函数之后可以取得CMainFrame *
2 在CView::OnCreate函数执行完毕后,可以查找C***View *
3 在CView::OnCreate函数执行完毕后,可以取得C***Doc *
-------------------------------
函数中进行。
作在CView的OnDraw函数中进行。
相应函数,而是到CView类寻找。如果CView类有该消息的响应函数,那么就直接调用CView类中的响应函数,否则,转到CDoc类寻找,如果CDoc类中存在该消息的响应函数,那么就直接调用CDoc类中的响应函数,否则,返回到CMainFrame类寻找。如果CMainFrame类中也没有,返回到CApp类中寻找。如果在CApp类中也没有找到,表示没有该菜单的响应函数。