zoukankan      html  css  js  c++  java
  • 动态切换视图窗口(转)

    文章标题:动态切换视图窗口
    原 作 者:程红秀
    原 出 处:vczx.com
    发 布 者:chx20
    发布类型:原创
    发布日期:2005-12-12
    今日/总浏览:1/4972
    下载代码:

    在CMainFrame中定义变量:

    CSplitterWnd m_wndSplitter;

    BOOL CMainFrame::ReplaceView(int row, int col, CRuntimeClass *pViewClass, SIZE
        size
    )
    {
       
    CCreateContext context;
       
    BOOL bSetActive;

       
    if ((this->m_wndSplitter.GetPane(row, col)->IsKindOf(pViewClass)) == TRUE)
           
    return FALSE;

       
    //获取文档对象的指针,以便在创建新视图的过程中能够使用它
       
    CDocument *pDoc = ((CView*)m_wndSplitter.GetPane(row, col))->GetDocument();

       
    CView *pActiveView = this->GetActiveView();
       
    if (pActiveView == NULL || pActiveView == m_wndSplitter.GetPane(row, col))
           
    bSetActive = TRUE;
       
    else
           
    bSetActive = FALSE;

       
    pDoc->m_bAutoDelete = FALSE; //设置标志,这样当视图销毁时不会删除文档
       
    ((CView*)m_wndSplitter.GetPane(row, col))->DestroyWindow(); //删除存在的视图
       
    pDoc->m_bAutoDelete = TRUE; //设回默认的标志


        //创建新视图
       
    context.m_pNewViewClass = pViewClass;
       
    context.m_pCurrentDoc = pDoc;
       
    context.m_pNewDocTemplate = NULL;
       
    context.m_pLastView = NULL;
       
    context.m_pCurrentFrame = NULL;
       
    m_wndSplitter.CreateView(row, col, pViewClass, size, &context);


       
    CView *pNewView = (CView*)m_wndSplitter.GetPane(row, col);

       
    if (bSetActive == TRUE)
           
    this->SetActiveView(pNewView);

       
    m_wndSplitter.RecalcLayout(); //重新计算位置
        // m_wndSplitter.GetPane(row,col)->SendMessage(WM_PAINT);

       
    return TRUE;
    }

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext *pContext)
    {
       
    if (!m_wndSplitter.CreateStatic(this, 1, 2))
           
    return FALSE;

       
    if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CTView), CSize(200, 100),
           
    pContext))
           
    return FALSE;

       
    if (!m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CFView), CSize(100, 100),
           
    pContext))
           
    return FALSE;

       
    m_bFormView = true;
       
    return TRUE;
    }


    void CMainFrame::OnFormView()
    {
       
    ReplaceView(0, 1, RUNTIME_CLASS(CFView), CSize(100, 100));
       
    m_bFormView = true;
    }

    void CMainFrame::OnListView()
    {
       
    ReplaceView(0, 1, RUNTIME_CLASS(CVVView), CSize(100, 100));
       
    m_bFormView = false;

    }

    void CMainFrame::OnUpdateFormView(CCmdUI *pCmdUI)
    {
       
    pCmdUI->SetCheck(m_bFormView);
    }

    void CMainFrame::OnUpdateListView(CCmdUI *pCmdUI)
    {
       
    pCmdUI->SetCheck(!m_bFormView);
    }

  • 相关阅读:
    ionic2 开始第一个App(二)
    简单的文件下载方法
    php获取汉字首字母
    LumiSoft.Net邮件接收乱码问题解决
    输入框字符限制插件·
    微软相关产品集合的网站,感觉找软件很方便 也很全 收藏了
    利用发射 下拉列表绑定枚举
    ASP.NET中UpdatePanel内控件的JS失效的问题
    Json格式转string
    SQL 判断是否存在时间交叉
  • 原文地址:https://www.cnblogs.com/seacode/p/1757468.html
Copyright © 2011-2022 走看看