void CUIExtensionUIHelper::RemoveExtensionsFromToolbar(CToolBar& toolbar, UINT nCmdAfter) { int nRemoved = 0; TBBUTTON tbb; CImageList* pIL = toolbar.GetToolBarCtrl().GetImageList(); for (UINT nExtID = m_nStartID; nExtID <= m_nStartID + m_nSize; nExtID++) { int nBtn = toolbar.CommandToIndex(nExtID); if (nBtn != -1) { VERIFY(toolbar.GetToolBarCtrl().GetButton(nBtn, &tbb)); if (toolbar.GetToolBarCtrl().DeleteButton(nBtn)) { // delete the image too pIL->Remove(tbb.iBitmap); nRemoved++; } } } // remove separator if (nRemoved) { int nSep = toolbar.CommandToIndex(nCmdAfter) + 1; toolbar.GetToolBarCtrl().DeleteButton(nSep); } }
void CFolderListCtrl::ClearImageList() { CImageList * pImgList = GetImageList( LVSIL_NORMAL ); if( pImgList ) for( int i = pImgList->GetImageCount() - 1; i > 0; i-- ) pImgList->Remove( i ); }
void CToolsHelper::AppendToolsToToolbar(const CUserToolArray& aTools, CToolBar& toolbar, UINT nCmdAfter) { // remove tools first RemoveToolsFromToolbar(toolbar, nCmdAfter); // then re-add if (aTools.GetSize()) { // figure out if we want the large or small images CSize sizeBtn(toolbar.GetToolBarCtrl().GetButtonSize()); sizeBtn -= CSize(7, 7); // btn borders from BarTool.cpp CSysImageList sil((sizeBtn.cx > 16)); VERIFY(sil.Initialize()); // start adding after the pref button int nStartPos = toolbar.CommandToIndex(nCmdAfter) + 1; int nAdded = 0; for (int nTool = 0; nTool < aTools.GetSize(); nTool++) { const USERTOOL& tool = aTools[nTool]; HICON hIcon = GetToolIcon(sil, tool); if (hIcon) { CImageList* pIL = toolbar.GetToolBarCtrl().GetImageList(); int nImage = pIL->Add(hIcon); TBBUTTON tbb = { nImage, nTool + m_nStartID, 0, TBSTYLE_BUTTON, 0, 0, (UINT)-1 }; if (toolbar.GetToolBarCtrl().InsertButton(nStartPos + nAdded, &tbb)) nAdded++; else // remove image pIL->Remove(nImage); // cleanup ::DestroyIcon(hIcon); } } // add a separator if any buttons added if (nAdded) { TBBUTTON tbb = { -1, 0, 0, TBSTYLE_SEP, 0, 0, (UINT)-1 }; toolbar.GetToolBarCtrl().InsertButton(nStartPos, &tbb); } } }
void CUIExtensionUIHelper::AppendExtensionsToToolbar(CToolBar& toolbar, UINT nCmdAfter) { // remove tools first RemoveExtensionsFromToolbar(toolbar, nCmdAfter); // then re-add int nNumExt = m_mgrUIExt.GetNumUIExtensions(); if (nNumExt) { // start adding after the pref button int nStartPos = toolbar.CommandToIndex(nCmdAfter) + 1; int nAdded = 0; for (int nExt = 0; nExt < m_mgrUIExt.GetNumUIExtensions(); nExt++) { HICON hIcon = m_mgrUIExt.GetUIExtensionIcon(nExt); if (hIcon) { CImageList* pIL = toolbar.GetToolBarCtrl().GetImageList(); int nImage = pIL->Add(hIcon); TBBUTTON tbb = { nImage, nExt + m_nStartID, 0, TBSTYLE_BUTTON, 0, 0, (UINT)-1 }; if (toolbar.GetToolBarCtrl().InsertButton(nStartPos + nAdded, &tbb)) { nAdded++; } else // remove image { pIL->Remove(nImage); } // Note: we do not delete the extensions icon } } // add a separator if any buttons added if (nAdded) { TBBUTTON tbb = { -1, 0, 0, TBSTYLE_SEP, 0, 0, (UINT)-1 }; toolbar.GetToolBarCtrl().InsertButton(nStartPos, &tbb); } } }