void CTabPanelWin::ShowToolbar(bool bShow) { if (bShow) { if (!IsToolbarCreated() && (CreateToolbar() != NULL)) { REBARBANDINFO rbBand = {80}; // не используем size, т.к. приходит "новый" размер из висты и в XP обламываемся rbBand.fMask = RBBIM_SIZE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_ID | RBBIM_STYLE | RBBIM_COLORS; rbBand.fStyle = RBBS_CHILDEDGE | RBBS_FIXEDSIZE | RBBS_VARIABLEHEIGHT; rbBand.clrBack = GetSysColor(COLOR_BTNFACE); rbBand.clrFore = GetSysColor(COLOR_BTNTEXT); SIZE sz = {0,0}; SendMessage(mh_Toolbar, TB_GETMAXSIZE, 0, (LPARAM)&sz); // Set values unique to the band with the toolbar. rbBand.wID = 2; rbBand.hwndChild = mh_Toolbar; rbBand.cx = rbBand.cxMinChild = rbBand.cxIdeal = mn_LastToolbarWidth = sz.cx; rbBand.cyChild = rbBand.cyMinChild = rbBand.cyMaxChild = sz.cy + mn_ThemeHeightDiff; // Add the band that has the toolbar. if (!SendMessage(mh_Rebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand)) { DisplayLastError(_T("Can't initialize rebar (toolbar)")); } } } else { _ASSERTEX(bShow); } }
void CTabPanelWin::ShowToolsPane(bool bShow) { if (bShow) { _ASSERTE(isMainThread()); if (!IsToolbarCreated() && (CreateToolbar() != NULL)) { REBARBANDINFO rbBand = {REBARBANDINFO_SIZE}; // не используем size, т.к. приходит "новый" размер из висты и в XP обламываемся rbBand.fMask = RBBIM_SIZE | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_ID | RBBIM_STYLE; rbBand.fStyle = RBBS_CHILDEDGE | RBBS_FIXEDSIZE | RBBS_VARIABLEHEIGHT; #if 0 rbBand.fMask |= RBBIM_COLORS; rbBand.clrFore = RGB(255,255,255); rbBand.clrBack = RGB(0,0,255); #endif SIZE sz = {0,0}; SendMessage(mh_Toolbar, TB_GETMAXSIZE, 0, (LPARAM)&sz); rbBand.wID = rbi_ToolBar; rbBand.hwndChild = mh_Toolbar; rbBand.cx = rbBand.cxMinChild = rbBand.cxIdeal = mn_LastToolbarWidth = sz.cx; rbBand.cyChild = rbBand.cyMinChild = rbBand.cyMaxChild = sz.cy + mn_ThemeHeightDiff; if (!SendMessage(mh_Rebar, RB_INSERTBAND, (WPARAM)-1, (LPARAM)&rbBand)) { DisplayLastError(_T("Can't initialize rebar (toolbar)")); } } } else { _ASSERTEX(!bShow); INT_PTR nPaneIndex = SendMessage(mh_Rebar, RB_IDTOINDEX, rbi_ToolBar, 0); if (nPaneIndex >= 0) { SendMessage(mh_Rebar, RB_DELETEBAND, nPaneIndex, 0); DestroyWindow(mh_Toolbar); mh_Toolbar = NULL; } } }