опубликован 10-04-2001 14:44 MSK
в MSDNовском примере DLGBARS есть Оччень клевая функция. В немного обобщенном варианте - получите ;-)
//------------
void C%КЛАСС-ГДЕ-ТЫ-ЕГО-СОЗДАЕШЬ(CmainFrame ИЛИ ЧТО-ТО ПОХОЖЕЕ::DockControlBarLeftOf(CControlBar * Bar, CControlBar * LeftOf)
{
CRect rect;
DWORD dw;
UINT n; // get MFC to adjust the dimensions of all docked ToolBars
// so that GetWindowRect will be accurate
RecalcLayout();
LeftOf->GetWindowRect(&rect);
rect.OffsetRect(1,0);
dw=LeftOf->GetBarStyle();
n = 0;
n = (dw&CBRS_ALIGN_TOP) ? AFX_IDW_DOCKBAR_TOP : n;
n = (dw&CBRS_ALIGN_BOTTOM && n==0) ? AFX_IDW_DOCKBAR_BOTTOM : n;
n = (dw&CBRS_ALIGN_LEFT && n==0) ? AFX_IDW_DOCKBAR_LEFT : n;
n = (dw&CBRS_ALIGN_RIGHT && n==0) ? AFX_IDW_DOCKBAR_RIGHT : n;
// When we take the default parameters on rect, DockControlBar will dock
// each Toolbar on a seperate line. By calculating a rectangle, we in effect
// are simulating a Toolbar being dragged to that location and docked.
DockControlBar(Bar,n,&rect);
}
Вот и все. да, кстати, она докит не только один левее другого, но и один выше другого, если надо.