Mfc

CDockablePaneの使用経験



Cdockablepane Use Experience



最近、私はプロジェクトを使用してMFCを使用しました CDockablePane レイアウトの場合、以下は9つのアプリケーションの例です。

1. CFrameWndExは、フレームワーククラスのヘッダーファイルで1つを定義します。 CDockablePane アレイ
CDockablePane m_Panes [5] //1 CDockablePane アレイ
2. CFrameWndEx :: OnCreate()Create関数でコードを自動的に生成しました。私はここでMFCに精通していません。
CMFCPopupMenu :: SetForceMenuFocus(FALSE) InitUserToolbars(NULL、uiFirstUserToolBarId、uiLastUserToolBarId) EnablePaneMenu(TRUE、ID_VIEW_CUSTOMIZE、0、ID_VIEW_TOOLBAR) CDockingManager :: SetDockingMode(DT_SMART) EnableAutoHidePanes(CBRS_ALIGN_ANY) EnableDocking(CBRS_ALIGN_ANY)
(1)最初のケース
if(!m_Panes [0] .Create(_T( 'Pane 0')、this、CRect(0、0、200、100)、TRUE、1000、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} m_Panes [0] .EnableDocking(CBRS_ALIGN_ANY) DockPane(&m_Panes [0]) //左
(2)2番目のケース if(!m_Panes [0] .Create(_T( 'Pane 0')、this、CRect(0、0、200、100)、TRUE、1000、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [1] .Create(_T( 'Pane 1')、this、CRect(0、0、200、100)、TRUE、1001 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) {FALSEを返します} m_Panes [0] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [1] .EnableDocking(CBRS_ALIGN_ANY) DockPane(&m_Panes [1]) //ボトム DockPane(&m_Panes [0]) //左
(3)3番目のケース


if(!m_Panes [0] .Create(_T( 'Pane 0')、this、CRect(0、0、200、100)、TRUE、1000、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [1] .Create(_T( 'Pane 1')、this、CRect(0、0、200、100)、TRUE、1001 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) {FALSEを返します} m_Panes [0] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [1] .EnableDocking(CBRS_ALIGN_ANY) DockPane(&m_Panes [0]) //左 DockPane(&m_Panes [1]) //ボトム
(4)4番目のケース
if(!m_Panes [0] .Create(_T( 'Pane 0')、this、CRect(0、0、200、100)、TRUE、1000、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [1] .Create(_T( 'Pane 1')、this、CRect(0、0、200、100)、TRUE、1001 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} m_Panes [0] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [1] .EnableDocking(CBRS_ALIGN_ANY) DockPane(&m_Panes [0]) //左 DockPane(&m_Panes [1]) //左 //ここに注意してください。1に0を入れてください m_Panes [0] .DockToWindow(&m_Panes [1]、CBRS_TOP)
(5)5番目のケース
if(!m_Panes [0] .Create(_T( 'Pane 0')、this、CRect(0、0、200、100)、TRUE、1000、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [1] .Create(_T( 'Pane 1')、this、CRect(0、0、200、100)、TRUE、1001 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} m_Panes [0] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [1] .EnableDocking(CBRS_ALIGN_ANY) DockPane(&m_Panes [0]) //左 DockPane(&m_Panes [1]) //左 CDockablePane * pTabbedBar = NULL //同じタブに配置し、デフォルトで1を選択します m_Panes [1] .AttachToTabWnd(&m_Panes [0]、DM_SHOW、TRUE、&pTabbedBar)
(6)第6の状況


if(!m_Panes [0] .Create(_T( 'Pane 0')、this、CRect(0、0、200、100)、TRUE、1000、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [1] .Create(_T( 'Pane 1')、this、CRect(0、0、200、100)、TRUE、1001 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [2] .Create(_T( 'Pane 2')、this、CRect(0、0、200、100)、TRUE、1002、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} m_Panes [0] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [1] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [2] .EnableDocking(CBRS_ALIGN_ANY) DockPane(&m_Panes [0]) //左 DockPane(&m_Panes [1]) //左 DockPane(&m_Panes [2]) //左 m_Panes [0] .DockToWindow(&m_Panes [2]、CBRS_TOP) CDockablePane * pTabbedBar = NULL m_Panes [1] .AttachToTabWnd(&m_Panes [0]、DM_SHOW、TRUE、&pTabbedBar)
(7)7番目のケース
if(!m_Panes [0] .Create(_T( 'Pane 0')、this、CRect(0、0、200、100)、TRUE、1000、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [1] .Create(_T( 'Pane 1')、this、CRect(0、0、200、100)、TRUE、1001 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) {FALSEを返します} m_Panes [0] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [1] .EnableDocking(CBRS_ALIGN_ANY) DockPane(&m_Panes [0]) //ボトム DockPane(&m_Panes [1]) //ボトム CDockablePane * pTabbedBar = NULL m_Panes [0] .DockToWindow(&m_Panes [1]、CBRS_LEFT)
(8)8番目のケース
if(!m_Panes [0] .Create(_T( 'Pane 0')、this、CRect(0、0、200、100)、TRUE、1000、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [1] .Create(_T( 'Pane 1')、this、CRect(0、0、200、100)、TRUE、1001 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [2] .Create(_T( 'Pane 2')、this、CRect(0、0、200、100)、TRUE、1002、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [3] .Create(_T( 'Pane 3')、this、CRect(0、0、200、100)、TRUE、1003、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [4] .Create(_T( 'Pane 4')、this、CRect(0、0、200、100)、TRUE、1004、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI)) {FALSEを返します} m_Panes [0] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [1] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [2] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [3] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [4] .EnableDocking(CBRS_ALIGN_ANY) DockPane(&m_Panes [0]) //ボトム DockPane(&m_Panes [1]) //ボトム DockPane(&m_Panes [2]) //左 DockPane(&m_Panes [3]) //左 DockPane(&m_Panes [4]) // 正しい CDockablePane * pTabbedBar = NULL m_Panes [0] .DockToWindow(&m_Panes [1]、CBRS_LEFT) m_Panes [3] .AttachToTabWnd(&m_Panes [2]、DM_SHOW、TRUE、&pTabbedBar)
(9)9番目のケース
if(!m_Panes [0] .Create(_T( 'Pane 0')、this、CRect(0、0、200、100)、TRUE、1000、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [1] .Create(_T( 'Pane 1')、this、CRect(0、0、200、100)、TRUE、1001 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_BOTTOM | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [2] .Create(_T( 'Pane 2')、this、CRect(0、0、200、100)、TRUE、1002、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [3] .Create(_T( 'Pane 3')、this、CRect(0、0、200、100)、TRUE、1003、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_LEFT | CBRS_FLOAT_MULTI)) {FALSEを返します} if(!m_Panes [4] .Create(_T( 'Pane 4')、this、CRect(0、0、200、100)、TRUE、1004、 WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CBRS_RIGHT | CBRS_FLOAT_MULTI)) {FALSEを返します} m_Panes [0] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [1] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [2] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [3] .EnableDocking(CBRS_ALIGN_ANY) m_Panes [4] .EnableDocking(CBRS_ALIGN_ANY) DockPane(&m_Panes [0])//ボトム DockPane(&m_Panes [1])//ボトム DockPane(&m_Panes [2])//左 DockPane(&m_Panes [3])//左 DockPane(&m_Panes [4])// 正しい CDockablePane * pTabbedBar = NULL m_Panes [1] .AttachToTabWnd(&m_Panes [0]、DM_SHOW、TRUE、&pTabbedBar) m_Panes [3] .AttachToTabWnd(&m_Panes [2]、DM_SHOW、TRUE、&pTabbedBar)