跟着 微软提供的 创建工具栏 代码学,使用自己按钮

//非编程专业人士写的代码,边抄边写,下面的代码来之 微软,略微修改后,放在主程序创建主窗口后面即可使用,我把它作为一个函数放在一了 主窗口的 WM_CREATE消息里

//为个性化,解析下代码,方便以后使用

//应用程序句柄

HIMAGELIST g_hImageList = NULL;
HWND CreateSimpleToolbar(HWND hWndParent, HINSTANCE g_hInst)
{
    // 初始化一些东西.
    const int ImageListID = 0;
    const int numButtons = 3;
    const int bitmapSize = 16;        // 工具栏图标的 大小 :这里拟打算 宽(cx) = 高(cy)

    const DWORD buttonStyles = BTNS_AUTOSIZE;

    // 只是创建了一个 灰色的横栏,还没有任何东西

//
    HWND hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
        WS_CHILD | TBSTYLE_WRAPABLE, 0, 0, 0, 0,
        hWndParent, NULL, g_hInst, NULL);

    if (hWndToolbar == NULL)
        return NULL;
    
// 创建 按钮图像 列表. 这就像雕刻、蚀刻工艺, 先弄个蚀刻网 做好 分格框架,为后面加工前面的 灰色栏 做准备
    g_hImageList = ImageList_Create(bitmapSize, bitmapSize,   // Dimensions of individual bitmaps.
        ILC_COLOR16 | ILC_MASK,   //  使用 16 位 (32/64k 彩色) DIB 部分。使用掩码。 图像列表包含两个位图,其中一个是用作蒙板的单色位图。

                // 如果未包含此值,则图像列表仅包含一个位图。
        numButtons, 0);
// 根据 列表 对 灰色工具栏 分格
    SendMessage(hWndToolbar, TB_SETIMAGELIST,
        (WPARAM)ImageListID,
        (LPARAM)g_hImageList);
   
 //载入 按钮图片 到 列表
    SendMessage(hWndToolbar, TB_LOADIMAGES,
        (WPARAM)IDB_STD_SMALL_COLOR,
        (LPARAM)HINST_COMMCTRL);


    TBBUTTON tbButtons[numButtons] =    {
        { MAKELONG(STD_FILENEW,  ImageListID), IDM_NEW,  TBSTATE_ENABLED, buttonStyles, {0}, 0, (INT_PTR)L"New" },
        { MAKELONG(STD_FILEOPEN, ImageListID), IDM_OPEN, TBSTATE_ENABLED, buttonStyles, {0}, 0, (INT_PTR)L"Open"},
        { MAKELONG(STD_FILESAVE, ImageListID), IDM_SAVE, TBSTATE_ENABLED,   buttonStyles, {0}, 0, (INT_PTR)L"Save"}            };

    // 载入到  工具栏.
    SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
    SendMessage(hWndToolbar, TB_ADDBUTTONS, (WPARAM)numButtons, (LPARAM)&tbButtons);

    // 调整 工具栏位置  并显示出来
    SendMessage(hWndToolbar, TB_AUTOSIZE, 0, 0);
    ShowWindow(hWndToolbar, TRUE);

    return hWndToolbar;
}

实现后,就是这个样子的

最开始是这样的   只修改示例代码的字符串 添加位图16*16位图资源修改后

====>

不New

 这个文字下面有个 New ,就是前面 构建按钮实体是设定的,我们改改 为 “不New”

 这段的第一行改掉,如下:

 在 建立 按钮列表前面增加自己的 图片作为按钮的代码:

  实现后的情况,如上面那个表格第三列的样子,第一个图标的 样子 和 文字 描述已经不一样了,成了我们自己需要的样子。而且第 52 行 修改后就是自己的消息响应,不再是示例代码关联的菜单栏

 

需要增加更多,就依次类推就好了。1、加入一样大小的资源,2、载入按钮图标列表,3、重新设定 按钮数量;4、TBBUTION结构的对应 安放按钮的序号,修改之。

 

这里恰好是修改的第一个,后面的需要 按序 替换

 

 

 

 

 

 

posted @ 2024-03-30 12:46  O-Y  阅读(3)  评论(0编辑  收藏  举报