Здравствуйте, Yuri, Вы писали:
Y>Привет всем! Y>Создаю ReBar, затем 3 ToolBar'а, добавляю ToolBar'ы на ReBar, но первый тулбар располагается в ребаре слева, как надо, а два других сносит вправо, причем информация о их положении не сохраняется, несмотря на то, что я при выходе делаю SaveBarState(_T("BarState"));. В чем проблема? Y>С уважением, Yuri
Функция, равняющая окна в rebar'е (для горизонтального)
void CMainFrame::ArrangeRebarBands(CReBarCtrl* pRebar)
{
//Band information
REBARBANDINFO bandinfo;
bandinfo.cbSize = sizeof(REBARBANDINFO);
bandinfo.fMask = RBBIM_CHILD;
//First band in line
bool bFirstInLine = true;
RecalcLayout();
UINT nCount = pRebar->GetBandCount();
for (UINT i=0; i<nCount — 1; i++)
{
CRect rectCur, rectNext;
//Get current band wnd
if (!pRebar->GetBandInfo(i, &bandinfo)) break;
CWnd* pWnd = FromHandle(bandinfo.hwndChild);
if (!pWnd) break; pWnd->GetWindowRect(&rectCur);
//Get next band wnd
if (!pRebar->GetBandInfo(i + 1, &bandinfo)) break;
pWnd = FromHandle(bandinfo.hwndChild);
if (!pWnd) break; pWnd->GetWindowRect(&rectNext);
//Is bands in one line?
if ((rectCur.bottom <= rectNext.top) || (rectCur.top >= rectNext.bottom))
{
//different lines
if (bFirstInLine)
pRebar->MinimizeBand(i);
else
pRebar->MaximizeBand(i);
bFirstInLine = true;
}
else
{
//same line
pRebar->MinimizeBand(i);
bFirstInLine = false;
}
}
if (bFirstInLine)
pRebar->MinimizeBand(nCount-1);
else
pRebar->MaximizeBand(nCount-1);
}