1) Right click Solution Explorer -> Add -> Resource -> Tool Bar -> New. This will open into Tool Bar Editor.
2)You can Create/Paint Buttons here. Make sure you change the default Ids of these buttons to some proper usable ids. (Use Property Explorer for this), this will create a .bmp image in resources. (Lets say, The Tool Bar is ‘TDR_TOOLBAR1’ and the two buttons are ‘IDC_TBUTTON1’ and ‘IDC_TBUTTON2’ )
3)Now go to the .h for dialog(You can add a class to a dialog) on which toolbar need to be placed. Declare a ‘CToolBar’ Object
CToolBar m_FirstToolBar
4)Now on the .cpp file of the dialog, in ‘OnInitDialog()’ add following code;(You Can add OnInitDialog event to the directly by declaring it in .h file added and using it in .cpp file)
if(!m_FirstToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || !m_FirstToolBar.LoadToolBar(IDR_TOOLBAR1))
{
EndDialog(IDCANCEL);
}
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST,0);
4.1. Here you can see the various attributes set for the toolbar in ‘CreateEx(...)’ like ‘TBSTYLE_FLAT’ for flat look of toolbar buttons;
4.2 In ‘LoadToolBar(...)’ the Resource created for the toolbar is used. This maps our toolbar object ‘m_FirstToolBar’ with resource ‘IDR_TOOLBAR1’
4.3 ‘RepositionBars()’ is used to place the toolbar on the dialog.
5) ‘MoveWindow()’ can be used to place the toolbar on the desired position.
m_FirstToolBar.MoveWindow( 50, 0,100, 100, 1 );
Now if you have finalized the place where you want to place the tool bar you can put it there using MoveWindow(...), my suggestion is to put a label in the design of dialog at place you want to put you toolbar; Then at run time get the position of this label and place the toolbar there using MoveWindow(...)
If you want to place this toolbar on Top Left and dynamically move all the controls accordingly and increase the dialog dimensions refer the article on this site I suggested above.
6)This is how the buttons of Tool Bar can be made visible/invisible
m_FirstToolBar.GetToolBarCtrl().HideButton(IDC_TBUTTON1, TRUE);
Notice that we have used the ‘IDC_TBUTTON1’ which we declared at the time of creating toolbar resource.
7) Similarly
m_FirstToolBar.GetToolBarCtrl().EnableButton(IDC_TBUTTON1,false)
can be used to disable a button.
8) To handle Click events: 8.1 Add following line to BEGIN_MESSAGE_MAP()
ON_COMMAND(IDC_TBUTTON1,OnToolBarButton1)
8.2 Write the desired code in .cpp file
FirstToolBarDialog:: OnToolBarButton1()
{
- - -
- - -
}