2008-10-16 28 views
1

在我的应用程序中,我有许多来自m_wndspliter类的窗格。我想要做的是在运行时显示并隐藏其中一个窗格。虽然使用以下代码可以显示和隐藏与窗格关联的视图,但我无法临时删除窗格本身。MFC:显示/隐藏分割器窗格

CWnd * pCurView = m_wndSplitter2.GetPane(2, 0); 
if(!pCurView == NULL) 
{ 
    if(fShow) 
    { 
     pCurView->ShowWindow(SW_SHOW); 
     RecalcLayout(); 
    } 
    else 
    { 
     pCurView->ShowWindow(SW_HIDE); 
     RecalcLayout(); 
    } 
} 

任何示例/想法?

谢谢大家。

回答

1

你需要调用CSplitterWnd :: DeleteView来做到这一点,这基本上意味着你必须在别处保存你的CView,如果你打算恢复它。通常这不是问题,因为所有的数据都应该存储在CDocument而不是CView中,但实际情况可能并非如此。

我过去处理过的方式是为我的CView类创建一个拷贝构造函数,这样我就可以轻松地将它们存储在临时变量中。

+1

我试过,但MFC引发时DeleteView被称为例外。 – Konrad 2008-10-16 16:54:49

+0

这意味着你正在做一些其他重叠的事情是错的。你认为这是MFC做错了什么? 基于这个和其他一些问题,你似乎需要学习一些MFC基础知识。用MFC编程Windows是一本很棒的书。 – 2008-10-19 00:56:26