我想从代码Sizing Control Bar派生出几个工具栏/菜单栏,我想将它们与CFrameWndEx一起使用,但找不到与ShowPane派生对象一起使用CControlBar函数的简便方法。

例如使用CFrameWnd

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


使用CFrameWndEx时,需要替换为:

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


但是我不能按原样使用m_ctlDimBar,因为它是CControlBar派生的对象,而不是CBasePane对象。有没有一种简单的方法可以避免不兼容而不必重写链接中的代码?

最佳答案

CControlBar是工具栏的旧世界,当您使用新的MFC样式时,必须使用CMFC类中的所有组件。遗憾的是,并非所有新类都以CMFC开头。

因此,如果您的CControlBar包含一些应该可停靠的内容,请立即使用CDockingPane。

CControlBar是CToolBar等的旧基类。

新类以这种方式派生:CMFCToolBar- CPane-> CWnd

CPane是最接近您的基类,而CDockingPane是窗口类
允许您放置自己的内容。

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

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

10-06 12:06