1. 程式人生 > >VC++ MFC SDI/MDI Ribbon程序的停靠窗格被關閉後如何再次顯示

VC++ MFC SDI/MDI Ribbon程序的停靠窗格被關閉後如何再次顯示

cnblogs display reat article control oca creat pan pic

問題: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程序的停靠窗格被關閉後如何再次顯示