网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
文档/视图结构中的各个部分是如何联系到一起的
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
在显示该文档的视图的指针,通过CDocument的成员函数GetFirstViewPosition和GetNextView函数可以实现对这些视图的访问。

在视图被创建的时候,在OnCreate函数里视图和文档发生了关联:

int CView::OnCreate(LPCREATESTRUCT lpcs)

{

       if (CWnd::OnCreate(lpcs) == -1)

              return -1;

       CCreateContext* pContext = (CCreateContext*)lpcs->lpCreateParams;



       if (pContext != NULL && pContext->m_pCurrentDoc != NULL)

       {

              pContext->m_pCurrentDoc->AddView(this);

              ASSERT(m_pDocument != NULL);

       }

       else

       {

              TRACE0("Warning: Creating a pane with no CDocument.\n");

       }



       return 0;   

}

这个关联是通过文档类的AddView函数实现的:

void CDocument::AddView(CView* pView)

{

    ……

       m_viewList.AddTail(pView);

       pView->m_pDocument = this;



       OnChangedViewList();   

}

在这个函数里,首先文档对象先把所添加的视图指针加到自己的视图链表里,然后指向自己的指针赋給了所添加的视图的m_pDocument成员。

众所周知,文档与视图进行通信的方式先调用文档的UpdateAllViews函数,从而调用视图的OnUpdate函数:

void CDocument::UpdateAllViews(CView* pSender, LPARAM lHint, CObject* pHint)

       // walk through all views

{

    //视图链表不能为空且发送者不能为空

       ASSERT(pSender == NULL || !m_viewList.IsEmpty());

       POSITION pos = GetFirstViewPosition();

       while (pos != NULL)

       {

              CView* pView = GetNextView(pos);

              ASSERT_VALID(pView);

      //不调用发送者的OnUpdate函数

              if (pView != pSender)

                     pView->OnUpdate(pSender, lHint, pHint);

       }

}

在视图的OnUpdate函数里默认的实现仅是通知视图进行重画:

Invalidate(TRUE);

我们一般重载这个更新视图的某
  • 上一篇资讯: VC怎么样显示位图详解
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号