创建工具栏

【勇芳软件工作室】汉化HomePreviousNext

以下示例使用CreateWindowEx函数创建用户可以自定义的工具栏,并具有与之关联的工具提示控件。该示例使用TB_ADDBITMAPTB_ADDSTRING消息将按钮图像和按钮字符串添加到工具栏。该示例还使用TB_ADDBUTTONS消息添加了三个按钮。

// CreateAToolBar - 创建工具栏并添加初始集合

//按钮。

//如果成功返回工具栏的句柄,否则返回NULL。

// hwndParent - 父窗口的句柄

HWND CreateAToolBar(HWND hwndParent)

{

HWND hwndTB;

TBADDBITMAP tbab;

TBBUTTON tbb[3];

char szBuf[16];

int iCut, iCopy, iPaste;

//确保加载公共控制DLL。

InitCommonControls();

//创建一个用户可以自定义的工具栏

//与其相关联的工具提示

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

WS_CHILD | TBSTYLE_TOOLTIPS | CCS_ADJUSTABLE,

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

//发送TB_BUTTONSTRUCTSIZE消息,这是必需的

//向后兼容性。

SendMessage(hwndTB,TB_BUTTONSTRUCTSIZE,

(WPARAM) sizeof(TBBUTTON), 0);

//将包含按钮图像的位图添加到工具栏。

tbab.hInst = g_hinst;

tbab.nID = IDB_BUTTONS;

SendMessage(hwndTB,TB_ADDBITMAP,(WPARAM)NUM_BUTTON_BITMAPS,

(WPARAM) &tbab);

//将按钮字符串添加到工具栏。

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);

//将TBBUTTON数组填入按钮信息,然后添加

//按钮到工具栏。

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;

}