//----------------------------------------------------------------------------- BOOL CMRCSizeToolBar::SetButtons(UINT * pButtons, int nButtons) // emulate CToolBar::SetButtons() //----------------------------------------------------------------------------- { // allocate an array of TBBUTTON's TBBUTTON * parrButtons = new TBBUTTON[nButtons]; // allocate an array int nImageNo = 0; // no of image in bitmap (coun int nBtn = 0; // no of buttons we've actually created (including separators) // may not equal no of buttons supplied by user, as id's may not // be found for (int i = 0; i < nButtons; i++) { UINT nID = pButtons[i]; parrButtons[i].dwData = NULL; parrButtons[i].iString = NULL; if (nID == ID_SEPARATOR) { parrButtons[nBtn].iBitmap = NULL; parrButtons[nBtn].idCommand = 0; parrButtons[nBtn].fsState = 0; parrButtons[nBtn].fsStyle = TBSTYLE_SEP; } else { if (m_pBitmapIds != NULL) // if there's a list of bitmaps, then translate this { nImageNo = FindBitmapIndex(nID); if (nImageNo == -1) { TRACE("Couldn't find bitmap for ID=%d\n",nID); continue; // skip to next iteration nImageNo = 0; } else { parrButtons[i].iBitmap = nImageNo; } } else { parrButtons[i].iBitmap = nImageNo; nImageNo++; } parrButtons[nBtn].idCommand = nID; parrButtons[nBtn].fsState = TBSTATE_ENABLED; parrButtons[nBtn].fsStyle = TBSTYLE_BUTTON; } nBtn++; } BOOL status = m_ToolCtrl.AddButtons(nBtn, parrButtons); delete parrButtons; return status; }
// emulate CToolBar::SetButtons() BOOL COXSizeToolBar::SetButtons(UINT* pButtons, int nButtons) { // allocate an array of TBBUTTON's TBBUTTON* parrButtons = new TBBUTTON[nButtons]; // allocate an array int nImageNo = 0; // no of image in bitmap (coun int nBtn = 0; // no of buttons we've actually created (including separators) // may not equal no of buttons supplied by user, as id's may not // be found int i = 0; for (i = 0; i < nButtons; i++) { UINT nID = pButtons[i]; parrButtons[i].dwData = NULL; parrButtons[i].iString = NULL; if (nID == ID_SEPARATOR) { parrButtons[nBtn].iBitmap = NULL; parrButtons[nBtn].idCommand = 0; parrButtons[nBtn].fsState = 0; parrButtons[nBtn].fsStyle = TBSTYLE_SEP; } else { if (m_pBitmapIds != NULL) // if there's a list of bitmaps, then translate this { nImageNo = FindBitmapIndex(nID); if (nImageNo == -1) { TRACE1("Couldn't find bitmap for ID=%d\n", nID); continue; // skip to next iteration } else { parrButtons[i].iBitmap = nImageNo; } } else { parrButtons[i].iBitmap = nImageNo; nImageNo++; } parrButtons[nBtn].idCommand = nID; parrButtons[nBtn].fsState = TBSTATE_ENABLED; parrButtons[nBtn].fsStyle = TBSTYLE_BUTTON; } nBtn++; } BOOL status = m_ToolCtrl.AddButtons(nBtn, parrButtons); for (i = 0; i < nBtn; i++) { if (parrButtons[i].fsStyle == TBSTYLE_BUTTON) { CRect ButtonRect; m_ToolCtrl.GetItemRect(i, &ButtonRect); m_VertDockSize.cx = ButtonRect.Width() + (DOCKED_HORZ_BORDER + 1) * 2; // One set is enough break; } } delete parrButtons; return status; }