Then we will add a toolbar to our application.
It will be a simple toolbar with buttons, with text and bitmaps.
First we must create the window itself
ToolBarWindow = CreateWindowEx(0,
TOOLBARCLASSNAME,
0,
WS_CHILD| WS_BORDER,
0, 0, 0, 0,
ParentWindow,
(HMENU )ToolBarId,
InstanceHandle,
0);
No surprise here, except the wnd-class name, TOOLBARCLASSNAME, which is the name of a predefined
wnd-class for toolbars.ToolBarId is the ID for the toolbar, it's defined the same way as StatusBarId, in the same enumeration.
The next to do is to TB_BUTTONSTRUCTSIZE message to the window, I'm not sure why this is needed, but the documentation say we have to:
SendMessage(ToolBarWindow,
TB_BUTTONSTRUCTSIZE,
(WPARAM )sizeof(TBBUTTON),
0);
Next we have to tell the toolbar which bitmap to use, in this simple case we will use
a standard set, it has 14 images to choose from, it fits nicely to this demo purpose.
TBADDBITMAP TBaddBitmap;
TBaddBitmap.hInst = HINST_COMMCTRL;
TBaddBitmap.nID = IDB_STD_SMALL_COLOR;
SendMessage(ToolBarWindow,
TB_ADDBITMAP,
(WPARAM )NumButton,
(LPARAM )&TBaddBitmap);
Notice that we use HINST_COMMCTRL as instance, as the bitmap is stored in the comctrl dll.NumButton the number of buttons we will have on the toolbar, its defined as:
const int NumButton = 3;Next we have to specify what text to show on the buttons and which bitmap to use:
TBBUTTON ButtonInfo[NumButton];
memset(ButtonInfo, 0, sizeof(ButtonInfo));
int idx;
idx = SendMessage(ToolBarWindow,
TB_ADDSTRING,
0,
(LPARAM )"Open");
ButtonInfo[0].iString = idx;
ButtonInfo[0].iBitmap = STD_FILEOPEN;
ButtonInfo[0].idCommand = FileOpenCmd;
ButtonInfo[0].fsState = TBSTATE_ENABLED;
ButtonInfo[0].fsStyle = TBSTYLE_BUTTON;
This has to be repeated for each button.Then we sends this information to the toolbar:
SendMessage(ToolBarWindow,
TB_ADDBUTTONS,
NumButton,
(LPARAM)&ButtonInfo);
And at the end we show the toolbar:
ShowWindow(ToolBarWindow, SW_SHOW);As for the statusbar, we must tell the toolbar to resize when the mainwindow is resized, so we add this line to the WM_SIZE handling:
SendMessage(ToolBarWindow, msg, wParam, lParam);The complete code for the application can be found here