Toolbar在Win SDK下用法

来源:互联网 发布:2016青少年犯罪率数据 编辑:程序博客网 时间:2024/05/16 08:18

Toolbar真的是要折磨死人,MSDN都翻遍了都调试不对。关键还是靠一个日本人写的Demo才搞好的[1]。

下面给出一个最简Toolbar,代码加入到WM_CREATE下面:

        // Create the toolbar.        HWND hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL,            TBSTYLE_FLAT | WS_CHILD | WS_VISIBLE, 0, 0, 0, 0,            hwnd, NULL, hInst, NULL);        // Create the image list.        HIMAGELIST g_hImageList = NULL;        g_hImageList = ImageList_Create(16, 16, ILC_COLOR32 | ILC_MASK, 1, 1);        ImageList_AddMasked(g_hImageList, (HBITMAP)LoadImage(hInst, (TCHAR *)1, IMAGE_BITMAP, 0, 0, LR_DEFAULTCOLOR), 0);        // Set the image list.        SendMessage(hWndToolbar, TB_SETIMAGELIST, (WPARAM)0, (LPARAM)g_hImageList);        TBBUTTON tbButtons[] =        {            { 0, 0, TBSTATE_ENABLED, BTNS_BUTTON, },            { 0, 0, 0, BTNS_SEP, },            { 1, 1, TBSTATE_ENABLED, BTNS_BUTTON, },            { 2, 2, TBSTATE_ENABLED, BTNS_BUTTON, },            { 3, 3, TBSTATE_ENABLED, BTNS_BUTTON, },            { 0, 0, 0, BTNS_SEP, },            { 4, 4, TBSTATE_ENABLED, BTNS_BUTTON, },            { 0, 0, 0, BTNS_SEP, },            { 5, 5, TBSTATE_ENABLED, BTNS_BUTTON, },            { 0, 0, 0, BTNS_SEP, 0, -1, },            { 0, 0, 0, BTNS_SEP, },            { 6, 6, TBSTATE_ENABLED, BTNS_BUTTON, },        };        // Add buttons.        SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);        SendMessage(hWndToolbar, TB_ADDBUTTONS, (WPARAM)sizeof(tbButtons) / sizeof(TBBUTTON), (LPARAM)&tbButtons);        // Resize the toolbar, and then show it.        SendMessage(hWndToolbar, TB_AUTOSIZE, 0, 0);

在.rc中加入:

1 BITMAP "toolbar.bmp"

LoadImage的第二个参数可以是外来的.bmp,也可以是内置资源。如果是内置资源的话参数为“(TCHAR *)资源号”。

所以如果是VS自动生成的.rc和Resource.h的话,填入资源名称(例如IDR_TOOLBAR1)就好了。

我自己改的.rc文件,写成了类似

IDR_TOOLBAR1 BITMAP "toolbar.bmp"

形式,又在Resource.h里加入#define IDR_TOOLBAR1 101,结果死活找不到图片。对比了VS自动生成的.rc,发现VS的.rc前面有#include “Resource.h”,而我的没有。加上这句就好了。低级错误啊。

参考
1.http://www.cnblogs.com/ifaithu/articles/2455564.html
2.https://msdn.microsoft.com/en-us/library/windows/desktop/bb760435(v=vs.85).aspx

0 0