2014-09-02 82 views
0

我从代码Sizing Control Bar,我想能够与CFrameWndEx使用的数种工具栏/菜单栏,但我无法找到一个易于使用的ShowPane功能与CControlBar派生的对象。更新到MFC功能包

例如与CFrameWnd

ShowControlBar(&m_ctlDimBar, m_ctlDimBar.IsVisible(), FALSE); 

需要更换,使用CFrameWndEx时,有:

ShowPane(&m_ctlDimBar, m_ctlDimBar.IsVisible(), FALSE, TRUE); 

然而,我不能用m_ctlDimBar因为是因为它是一个CControlBar派生类对象而不是一个CBasePane对象。有没有一种简单的方法来避免不兼容性,而不必重写链接中的代码?

+0

这取决于你是如何做到的。我总是使用从CBCGPDockingControlBar派生的Windows。他们以同样的方式工作。 – xMRi 2014-09-02 11:59:15

+0

它看起来像CBCGPDockingControlBar是第三方? – Jak 2014-09-02 12:01:28

+0

微软与BCGSoft携手将其控件捆绑为“MFC功能包”。 – 2014-09-02 12:15:36

回答

1

CControlBar是工具栏的旧世界,当您使用新的MFC风格时,您必须使用CMFC类中的所有组件。可悲的是,并不是所有的新课程都以CMFC开始。

所以,如果你有一个CControlBar与一些应该可停靠的内容现在使用CDockingPane。

CControlBar是CToolBar和其他的旧基类。

这些新的类派生这样:CMFCToolBar - < CMFCBaseToolBar - > CPane - >的CWnd

CPane最近的基类为您和CDockingPane是窗口类 ,允许你把你自己的内容。

找出这些新东西如何工作的最简单方法是使用向导创建示例应用程序。比查看基类如何实现不同类型的窗口。描述是可怕的,几乎不存在。但是使用代码并不复杂。 ;)

PS:在我写了一些评论后,我尝试了一个答案。