Click here to Skip to main content
Licence 
First Posted 21 May 2003
Views 100,182
Bookmarked 31 times

Toolbar with image background

By | 30 May 2003 | Article
Shows how to display a bitmap in a toolbar as background.

Sample Image - imagetoolbar.jpg

Introduction

The proposed class is based on Daniel Godson's: Generating inactive/disabled images for toolbar. I have fixed some errors in the original code. But there are still some shortcomings left:

  1. the function to load bitmap from the file and display it is not implemented
  2. the size of buttons on the toolbar is 24×24, I haven't give an interface to change it.

Using the code

Just 2 places you need to edit for your own use.

First is,

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
  if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
    return -1;
 
  if (!m_wndToolBar.CreateEx(this, 
    TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
    | CBRS_GRIPPER | CBRS_TOOLTIPS | 
    CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
    !m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
  {
    TRACE0("Failed to create toolbar\n");
    return -1;      // fail to create
  }
 
  int *num,i,j=m_wndToolBar.GetToolBarCtrl().GetButtonCount();
  num=new int[j+1];
  memset(num,0,(j+1)*sizeof(int));
  num[0]=j;//button numbers,include the separators.
  for(i=0;i<j;i++)
  {
     if(ID_SEPARATOR == m_wndToolBar.GetItemID( i ))
        num[i+1]=1;
  }//get the button info.zero represent the 
  //separators.the info is used to calc 
  //the position of the buttons.

  m_wndToolBar.SetFullColorImage(IDR_MAINFRAME_24, 
    RGB(255, 0, 255),num); //the first Parameter 
    //specify the resource id of button bitmap , 
    //second is the backgroud color of  the toolbar.
    
  if (!m_wndStatusBar.Create(this) ||
    !m_wndStatusBar.SetIndicators(indicators,
    sizeof(indicators)/sizeof(UINT)))
  {
    TRACE0("Failed to create status bar\n");
    return -1;      // fail to create
  }
  
  // TODO: Delete these three lines if
  // you don't want the toolbar to
  //  be dockable
  m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
  EnableDocking(CBRS_ALIGN_ANY);
  DockControlBar(&m_wndToolBar);
  delete []num;
  return 0;
}

Second is, change the background bitmap here, by resource ID. So you must add the bitmap to your workplace first.

void CMainFrame::OnChangebk() 
{
  // TODO: Add your command handler code here
  if(whichbk)
    m_wndToolBar.UpdateBk(IDR_MAINFRAME_24, 
           RGB(255, 0, 255) , IDB_BITMAP1);
  else
    m_wndToolBar.UpdateBk(IDR_MAINFRAME_24 ,
       RGB(255, 0, 255) , IDB_BITMAP2);
  whichbk=!whichbk;
}

Acknowledgements

  • Thanks for xxxyyyzzz's translation!
  • Thanks for DavidRipple's suggestion!

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here

About the Author

Cryingwind



China China

Member



Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
You must Sign In to use this message board. (secure sign-in)
 
Search this forum  
 FAQ
    Noise  Layout  Per page   
  Refresh
Generalnot working in VS 2005 PinmemberMember 423561323:38 22 Nov '09  
QuestionWhy this program only support multi-byte character set? Pinmemberbenjamin_tang20:56 27 Sep '08  
Generalif use this in rebar , the bitmap can extend to rightmost PinmemberCryingwind19:49 19 Dec '04  
GeneralDamn!!! PinmemberSchniddel8:38 14 Sep '04  
Generalmemory leak!!!!!!! Pinmemberhuangashen16:13 20 Jul '04  
Generaldo as the following , ok! Pinmemberccart77716:27 20 Aug '04  
GeneralRe: do as the following , ok! Pinmemberyaodebo3:04 25 Jan '07  
GeneralRe: WRONG Pinmemberyaodebo16:07 25 Jan '07  
Generalvery nice Pinmemberkrskumar3:14 26 Sep '03  
Generalhoe to very nice... but how ! incorporate in dialog base application PinmemberRajesh match2:26 24 Sep '03  
GeneralWorking under Windows XP PinmemberLi Zhaoming0:33 28 May '03  
GeneralRe: Working under Windows XP PinmemberCryingwind18:21 29 May '03  
GeneralBeautiful Pinmember*love*18:56 24 May '03  
GeneralTHANKS VERY MUCH!! I had changed the project PinmemberCryingwind18:04 24 May '03  
GeneralInternational forum PinmemberXSimon1:24 23 May '03  
GeneralA suggestion to Chinese authors PinmemberDavidRipple17:36 22 May '03  
GeneralRe: A suggestion to Chinese authors Pinmemberjjqiao22:47 28 Dec '03  
GeneralRe: A suggestion to Chinese authors Pinmemberhaoshenghan4:04 26 Apr '04  
GeneralRe: A suggestion to Chinese authors Pinmembermace2:26 5 May '04  
GeneralLet me try to translate it, hehe Pinmemberxxxyyyzzz9:28 22 May '03  
Generalwtf PinmemberSteve McLenithan2:27 22 May '03  

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Mobile
Web01 | 2.5.120517.1 | Last Updated 31 May 2003
Article Copyright 2003 by Cryingwind
Everything else Copyright © CodeProject, 1999-2012
Terms of Use
Layout: fixed | fluid