2012-05-19 64 views
0

現在我的酒吧位於幀感謝nDockBarID = AFX_IDW_DOCKBAR_LEFT具體對接框架

ForcesBar* m_forcesBar[3]; 

    for (int i=0; i<3; i++) 
{ 
    m_forcesBar[i]->SetBarStyle(m_forcesBar[i]->GetBarStyle() | 
     CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); 
    m_forcesBar[i]->EnableDocking(CBRS_ALIGN_ANY); 
} 

pMainFrame->EnableDocking(CBRS_ALIGN_ANY); 

pMainFrame->DockControlBar(m_forcesBar[0], AFX_IDW_DOCKBAR_LEFT); 
pMainFrame->DockControlBar(m_forcesBar[1], AFX_IDW_DOCKBAR_LEFT); 
pMainFrame->DockControlBar(m_forcesBar[2], AFX_IDW_DOCKBAR_LEFT); 

enter image description here

雖然我希望收到此類酒吧組合:

enter image description here

我認爲在

中使用lpRect會很好
void DockControlBar(
    CControlBar* pBar, 
    UINT nDockBarID = 0, 
    LPCRECT lpRect = NULL 
); 

但不幸的是它不起作用。 你能舉出製作這種特定的調焦(secon圖片)的代碼示例。

(在項目中,我使用CSizingControlBar http://www.datamekanix.com/sizecbar/manual.html

+0

如何使用AFX_IDW_DOCKBAR_BOTTOM而不是AFX_IDW_DOCKBAR_LEFT? – Attila

+0

如果是這樣,我會在屏幕的左側和底部接受酒吧。這種方式與圖片2沒有什麼共同之處。 – Diego666

+0

Attila,這裏是你的解決方案的圖片:http://me4u.ru/i/ywy.jpg – Diego666

回答

1

我測試了它,並使用矩形工作正常。 一個區別是,在我的測試程序,我已經宣佈m_forcesBar在爲MainFrm.h作爲

ForcesBar m_forcesBar[3]; 

避免在堆上分配和記憶內存釋放。

我使用的代碼(代碼段從OnCreate中):

EnableDocking(CBRS_ALIGN_ANY); 

m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY); 
m_wndToolBar2.EnableDocking(CBRS_ALIGN_ANY); 

DockControlBar(&m_wndToolBar1); 
DockControlBar(&m_wndToolBar2); 

CRect rectWnd; 
GetClientRect(rectWnd); 
ClientToScreen(rectWnd); 

for(int iIndx = 0; iIndx < 3; iIndx++) 
{ 
    if (!m_forcesBar[iIndx].Create(_T(""), this, 120 + iIndx)) 
    { 
     TRACE0("Failed to create mybar\n"); 
     return -1;  // fail to create 
    } 

    m_forcesBar[iIndx].SetBarStyle(m_forcesBar[iIndx].GetBarStyle() | 
     CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC); 


    m_forcesBar[iIndx].EnableDocking(CBRS_ALIGN_LEFT); 



    DockControlBar(&m_forcesBar[iIndx], AFX_IDW_DOCKBAR_LEFT, rectWnd); 


} 

即它。

+0

謝謝。 JohnCz,我如何在對接時設置這個酒吧的高度? – Diego666