Creating a Toolbar

The following example uses the CreateWindowEx function to create a toolbar that the user can customize and that has a tooltip control associated with it. The example uses the TB_ADDBITMAP and TB_ADDSTRING messages to add button images and buttons strings to the toolbar. The example also adds three buttons by using the TB_ADDBUTTONS message.

// CreateAToolBar - creates a toolbar and adds the initial set of

// buttons to it.

// Returns the handle of the toolbar if successful or NULL otherwise.

// hwndParent - handle of the parent window

HWND CreateAToolBar(HWND hwndParent)

{

HWND hwndTB;

TBADDBITMAP tbab;

TBBUTTON tbb[3];

char szBuf[16];

int iCut, iCopy, iPaste;

// Ensure that the common control DLL is loaded.

InitCommonControls();

// Create a toolbar that the user can customize and that has a

// tooltip associated with it.

hwndTB = CreateWindowEx(0, TOOLBARCLASSNAME, (LPSTR) NULL,

WS_CHILD | TBSTYLE_TOOLTIPS | CCS_ADJUSTABLE,

0, 0, 0, 0, hwndParent, (HMENU) ID_TOOLBAR, g_hinst, NULL);

// Send the TB_BUTTONSTRUCTSIZE message, which is required for

// backward compatibility.

SendMessage(hwndTB, TB_BUTTONSTRUCTSIZE,

(WPARAM) sizeof(TBBUTTON), 0);

// Add the bitmap containing button images to the toolbar.

tbab.hInst = g_hinst;

tbab.nID = IDB_BUTTONS;

SendMessage(hwndTB, TB_ADDBITMAP, (WPARAM) NUM_BUTTON_BITMAPS,

(WPARAM) &tbab);

// Add the button strings to the toolbar.

LoadString(g_hinst, IDS_CUT, (LPSTR) &szBuf, MAX_LEN);

iCut = SendMessage(hwndTB, TB_ADDSTRING, 0, (LPARAM) (LPSTR) szBuf);

LoadString(g_hinst, IDS_COPY, (LPSTR) &szBuf, MAX_LEN);

iCopy = SendMessage(hwndTB, TB_ADDSTRING, (WPARAM) 0,

(LPARAM) (LPSTR) szBuf);

LoadString(g_hinst, IDS_PASTE, (LPSTR) &szBuf, MAX_LEN);

iPaste = SendMessage(hwndTB, TB_ADDSTRING, (WPARAM) 0,

(LPARAM) (LPSTR) szBuf);

// Fill the TBBUTTON array with button information, and add the

// buttons to the toolbar.

tbb[0].iBitmap = BMP_CUT;

tbb[0].idCommand = IDM_CUT;

tbb[0].fsState = TBSTATE_ENABLED;

tbb[0].fsStyle = TBSTYLE_BUTTON;

tbb[0].dwData = 0;

tbb[0].iString = iCut;

tbb[1].iBitmap = BMP_COPY;

tbb[1].idCommand = IDM_COPY;

tbb[1].fsState = TBSTATE_ENABLED;

tbb[1].fsStyle = TBSTYLE_BUTTON;

tbb[1].dwData = 0;

tbb[1].iString = iCopy;

tbb[2].iBitmap = BMP_PASTE;

tbb[2].idCommand = IDM_PASTE;

tbb[2].fsState = TBSTATE_ENABLED;

tbb[2].fsStyle = TBSTYLE_BUTTON;

tbb[2].dwData = 0;

tbb[2].iString = iPaste;

SendMessage(hwndTB, TB_ADDBUTTONS, (WPARAM) NUM_BUTTONS,

(LPARAM) (LPTBBUTTON) &tbb);

ShowWindow(hwndTB, SW_SHOW);

return hwndTB;

}