毛毛的小窝 — 关注技术交流、让我们一起成长

导航

框架、文档、视图类之间的调用关系

1、主框架(CFrameWnd)中访问视图(CView)
  CView* GetActiveView() const;
  通常定义的视图为CView的派生类,在调用自定义视图对象的方法时

应该这样写:((CMouseKeyView*)GetActiveView())->MyFunc();

2、主框架(CFrameWnd)中访问文档(CDocument)
  GetActiveDocument,返回CDocument对象;

3、在视图(CView)中访问文档(CDocument)
  inline CMouseKeyDoc* CMouseKeyView::GetDocument()
    {return (CMouseKeyDoc*)m_pDocument;}

4、在视图(CView)中访问框架(CFrameWnd)
  CFrameWnd* GetParentFrame() const;

5、在文档(CDocument)中访问框架(CFrameWnd)
  CWnd* AfxGetMainWnd();
  CWnd* AfxGetApp()->m_pMainWnd;

6、在文档(CDocument)中访问视图(CView)
  UpdateAllViews
  功能:通知所有的视图文档已被修改的信息
  原型:
    void UpdateAllViews(
      CView* pSender,  // 要更新的视图指针,如果希望更新所有视

图,将此参数设为NULL
      LPARAM lHint=0L, // 包含更改消息的通知
      CObject* pHint=NULL // 保管更改消息的对象
    }

7、在其他类中访问文档类(CDocument)
  CDocument* GetDocument()
  {
    CFrameWnd* frm=(CFrameWnd*)::AfxGetMainWnd();
    ASSERT(frm);
    CDocument* pDoc=frm->GetActiveDocument();
    ASSERT(pDoc);
    ASSERT(pDoc->IsKindOf(RUNTIME_CLASS(CMouseKeyDoc)));
    return (CMouseKeyDoc*)pDoc;
  }

posted on 2007-09-16 21:21  mjgforever  阅读(826)  评论(0编辑  收藏  举报