VC++ MFC SDI/MDI Ribbon程序的停靠窗格被關閉後如何再次顯示
問題: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*/)及可。
VC++ MFC SDI/MDI Ribbon程序的停靠窗格被關閉後如何再次顯示