MFC中的工具栏隐藏与显示问题。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC中的工具栏隐藏与显示问题。相关的知识,希望对你有一定的参考价值。

我在MFC中自己手动添加了一个工具栏,并添加一个菜单项,点击这个菜单来隐藏与显示
这个工具栏。 但当工具栏为浮动状态时隐藏后,再显示,工具栏显示的位置不是隐藏前的位置了。

注: 不用 ShowControlBar 用 ShowWindow 实现。。

参考技术A 可能不能用ShowWindow()或者,SetWindowPos()来显示浮动窗口。
函数 FloatControlBar()可以用来显示。
代码如下:
增加数据成员:
CRect m_rectBar; CPoint point; BOOL IsFloat; m_ToolBar是CToolBar对象

if(m_ToolBar.IsWindowVisable())

if(IsFloat=m_ToolBar.IsFloating)

m_ToolBar.GetWindowRect(&rect);


m_ToolBar.ShowWindow(SW_HIDE);
RecalcLayoout();
DockControlBar(&m_ToolBar);

else

m_ToolBar.ShowWindow(SW_SHOW);
if(IsFloat)

point.x=m_rectBar.left;
point.y=m_rectBar.top;
FloatControlBar(&m_rectBar,point);

else

RecalcLayout();
DockControlBar();

MFC:显示/隐藏拆分器窗格

【中文标题】MFC:显示/隐藏拆分器窗格【英文标题】:MFC: Showing / Hiding Splitter Panes 【发布时间】:2008-10-16 15:39:25 【问题描述】:

在我的应用程序中,我有许多来自 m_wndspliter 类的窗格。我想要做的是在运行时显示和隐藏这些窗格之一。虽然使用以下代码可以显示和隐藏与窗格关联的视图,但我无法暂时删除窗格本身。

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 类创建一个复制构造函数,这样我就可以轻松地将它们存储在临时变量中。

【讨论】:

我试过了,但调用 DeleteView 时 MFC 会引发异常。 这意味着你做错了一些其他重叠的事情。你认为是 MFC 做错了什么吗?基于此以及您的其他一些问题,您似乎需要学习一些 MFC 基础知识。用 MFC 编程 Windows 是一本很棒的书。【参考方案2】:

这有帮助吗?

http://www.codeguru.com/cpp/w-d/splitter/article.php/c1543

我自己也用过类似的东西,

【讨论】:

我似乎无法让该代码工作,它一直在失败。我认为这与我使用的分离器是另一个分离器中的孩子有关。另外,我真的很想自己编写/实现它,而不是拿一个受版权保护的作品然后把它粘贴到我的项目中。【参考方案3】:

只有 CodeProject 文章 https://www.codeproject.com/Articles/2707/A-Static-Splitter-with-the-Ability-to-Hide-Show-Mu 中的 CExtSplitter 类对我有用。

这仍然是 VC6 代码,但经过了一些小的修改。

【讨论】:

以上是关于MFC中的工具栏隐藏与显示问题。的主要内容,如果未能解决你的问题,请参考以下文章

MFC:显示/隐藏拆分器窗格

mfc中的CMFCToolBar类怎么实现工具栏上的按钮多行显示??急!!!

怎样让MFC工具栏停靠在左侧

MFC对话框上的WPF用户控件每隔一段时间显示隐藏

MFC里怎么样去掉工具栏?

MFC 工具栏中的弹出菜单