WEB开发网
开发学院软件开发VC 深入浅出MFC“文档/视图”架构(3)――文档 阅读

深入浅出MFC“文档/视图”架构(3)――文档

 2009-02-11 20:00:34 来源:WEB开发网   
核心提示: CDocument::OnCloseDocument函数的程序流程为:(1)通过文档对象所对应的视图,得到显示该文档视图的框架窗口的指针;(2)关闭并销毁这些框架窗口;(3)判断文档对象的自动删除变量m_bAutoDelete是否为真,深入浅出MFC“文档/视图”架构(3)――文档(7),

CDocument::OnCloseDocument函数的程序流程为:

(1)通过文档对象所对应的视图,得到显示该文档视图的框架窗口的指针;

(2)关闭并销毁这些框架窗口;

(3)判断文档对象的自动删除变量m_bAutoDelete是否为真,如果为真,则以delete this语句销毁文档对象本身。

实际上,真正实现文档存储和读取(相对于磁盘)的函数是Serialize,这个函数通常会被CDocument的派生类重载(加入必要的代码,用以保存对象的数据成员到CArchive对象以及从CArchive对象载入对象的数据成员状态):

void CExampleDoc::Serialize(CArchive& ar)
{
    if (ar.IsStoring())
    {
       // TODO: add storing code here
       ar << var1 << var2;
    }
    else
    {
       // TODO: add loading code here
       var2 >> var1 >> ar;
    }
}

地球人都知道,文档与视图进行通信的方式是调用文档类的UpdateAllViews函数:

void CDocument::UpdateAllViews(CView* pSender, LPARAM lHint, CObject* pHint)
    // walk through all views
{
    ASSERT(pSender == NULL || !m_viewList.IsEmpty());
       // must have views if sent by one of them
  
    POSITION pos = GetFirstViewPosition();
    while (pos != NULL)
    {
       CView* pView = GetNextView(pos);
       ASSERT_VALID(pView);
       if (pView != pSender)
           pView->OnUpdate(pSender, lHint, pHint);
    }
}

上一页  2 3 4 5 6 7 8 9  下一页

Tags:深入浅出 MFC 文档

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接