Toolbar在Win SDK下用法

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值