如何在VC中实现把一个旧的视图保存到链表中,从而实现类似于一般网页通过后退恢复旧的视图的功能。请直接给出实现代码。

解决方案 »

  1.   

    View是对Document的一个外观显示,怎么可能脱离Documnet而保存View呢?
    要么就在页面跳转时,把所有的Document,保存在本地文件中或自己开一个缓冲吧。
    你在用CHtmlView是吧?里面就自带的有导航功能的一系列函数,如GoBack(),GoForward,Stop,Refresh等等,自已看MSDN吧
      

  2.   

    这是我所写的一段代码:
    void CMainFrame::SwitchView(int nView)
    {
    BOOL bFlag = m_splitterWndRow2.GetPane(0, 0)->IsKindOf(RUNTIME_CLASS(CDataFormView));

    if (nView == DATA_LIST && bFlag)
    return;
    /*if (nView == DATA_QUERY && (!bFlag))
    return;查询页还是要重新构建来初始化界面*/ 
    CCreateContext context;
    context.m_pCurrentDoc = GetActiveView()->GetDocument();
    context.m_pCurrentFrame = this;
    m_splitterWndRow2.DeleteView(0, 0);
    if(nView == DATA_QUERY)
    {
    m_splitterWndRow2.CreateView(0, 0, RUNTIME_CLASS(CQueryView), CSize(0, 310), &context);
    }
    else
    {
    m_splitterWndRow2.CreateView(0, 0, RUNTIME_CLASS(CDataFormView), CSize(0, 310), &context);
    }
    ((CView*)m_splitterWndRow2.GetPane(0, 0))->OnInitialUpdate();
    m_splitterWndRow2.RecalcLayout();
    }
    我现在要做的是在m_splitterWndRow2.DeleteView(0, 0);语句之前,先用CPtrList保存所要删除的View,在以后要用时通过遍历链表来调用它,应怎么实现呢
      

  3.   

    保存CWnd *pWnd=m_splitterWndRow2.CreateView()
    到一个vector或数组
      

  4.   

    我现在在m_splitterWndRow2.DeleteView(0, 0);语句之前通过添加
            CPtrList p_List;
    CWnd *pos =(CWnd *)GetActiveView();
    p_List.AddTail (pos);
    代码实现对将删除的View进行保存了,但是应怎样才能把所保存的View重新显示到客户区呢?
      

  5.   

    CWnd *pos =(CWnd *)GetActiveView();
    p_List.AddTail (pos);
    代码实现对将删除的View进行保存了,但是应怎样才能把所保存的View重新显示到客户区呢?//
    pos->ShowWindow(SW_SHOW);
    其余的pos->ShowWindow(SW_HIDE);