VC++ 创建基于MFC的SDI应用程序,Visual Studio风格的主界面如下图所示,在该主界面上的视图菜单下包含有队对各个可停靠窗格显示或隐藏的控制菜单项。而基于Ribbon风格的应用程序,所以视图菜单下面的其他菜单都不显示了,只剩下了一个控制状态条显示或隐藏的CheckBox。
问题:MFC程序使用了Ribbon风格的,所以其他菜单都不显示了。有一个系统自动生成的停靠窗格,被该窗格不小心关掉后,再调试也显示不出来了。肿么办啊?
解答:消除停靠位置,存储记忆功能:在CMainFrame中,CreateDocablePane之前,调用CMainFrame::EnableLoadDockState(FALSE);即可。
如果MFC程序不是Ribbon风格的,窗体界面一般如下图所示:
可以通过在View视图菜单里添加如下代码实现隐藏的窗格的再次显示:
CDockablePane::ShowPane();
docablepane 可停靠窗口在使用过程中的问题小结 vc mfc
问题一:可停靠窗口在左上角显示 没有停靠到指定位置
这几天在调Docablepane 可停靠窗口VC++ 2010,遇到这个如题问题。
目前接触到的原因:
1、DockPane(&m_yourPane);//未调用,或未执行
2、//并且注意在m_yourPane.Create( 中创建风格处指定 | WS_VISIBLE);
内部运行原理原因没分析出来,估计与Cpane的SetWindowPos 函数处调用有问题。感兴趣可调试Mfc源代码
问题二:消除停靠位置,存储记忆功能
在CMainFrame中,CreateDocablePane之前,调用CMainFrame::EnableLoadDockState(FALSE);
问题三:去掉停靠窗口右上角关闭按钮,
m_ourPane.SetControlBarStyle(~AFX_CBRS_CLOSE)
问题四:如何指定可停靠位置。
1、在创建时,风格参数中 CBRS_BOTTOM \CBRS_LEFT ... 等指定初始显示的位置
2、创建后可调用 m_pane.EnableDocking(CBRS_ALIGN_ANY/*任意位置*/); CBRS_ALIGN_LEFT, BOTTOM 等 指定可停靠在Frame中的位置
注意,当指定dcoapane的控制条某些属性(SetControlBarStyle(AFX_CBRS_RESIZE))后,用户则无法拖动该可停靠窗口
问题五:如何禁止用户拖动可停靠窗口
m_pane.SetControlBarStyle(AFX_CBRS_RESIZE);
问题六:如何排版多个可停靠窗口
请参考:http://blog.csdn.net/kikaylee/article/details/8936953
如何创建多功能停靠窗口,以及如和销毁可停靠窗口,以及使用参见:http://www.codeproject.com/Articles/493218/Understanding-CDockablePane
个人觉得普通显示关闭,没必要像codeProject这位,每次都去创建销毁可停靠窗口来进行显示或隐藏,建议使用成员函数的方式,进行m_pane.ShowWindow(SW_HIDE /*SW_SHOW*/)及可。