示例#1
0
//-----------------------------------------------------------------------------
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;
}