我有几个从代码Sizing Control Bar派生的工具栏/菜单栏,我希望能够与CFrameWndEx
一起使用,但我无法找到易于使用的{{1}使用ShowPane
派生对象的函数。
例如CControlBar
:
CFrameWnd
使用ShowControlBar(&m_ctlDimBar, m_ctlDimBar.IsVisible(), FALSE);
时需要替换为:
CFrameWndEx
但我不能原样使用ShowPane(&m_ctlDimBar, m_ctlDimBar.IsVisible(), FALSE, TRUE);
,因为它是m_ctlDimBar
派生对象,而不是CControlBar
对象。是否有一种简单的方法来规避不兼容性而无需重写链接中的代码?
答案 0 :(得分:1)
CControlBar是工具栏的旧世界,当您使用新的MFC样式时,必须使用CMFC类中的所有组件。遗憾的是,并非所有新课程都以CMFC开始。
因此,如果您有一个CControlBar,其中一些内容应该可以停靠,请立即使用CDockingPane。
CControlBar是CToolBar和其他的旧基类。
新类以这种方式派生:CMFCToolBar - < CMFCBaseToolBar - > CPane - >的CWnd
CPane是最近的基类,CDockingPane是窗口类 这允许您放置自己的内容。
了解这些新内容如何工作的最简单方法是使用向导创建示例应用程序。比看基类如何实现不同类型的窗口。描述很糟糕,几乎不存在。但使用代码并不复杂。 ;)
PS:在我写了一些评论后,我试着回答。