工具栏类名
ToolbarWindow32
工具栏控件的创建
1用CreateWindowEx来创建工具栏
HWND hToolBar=CreateWindowEx(0,
TEXT("ToolbarWindow32"), //工具栏类名
NULL,
WS_CHILD|WS_VISIBLE|TBSTYLE_TOOLTIPS|TBSTYLE_FLAT, //工具栏样式
0,0,0,0,
hParent, //父窗口句柄
(HMENU)uToolBarID, //工具栏ID
GetModuleHandle(NULL), //应用程序实例句柄
0);
1.1工具栏样式
工具栏样式:
TBSTYLE_ALTDRAG 允许按住ALT键手动按钮位置
TBSTYLE_FLAT 平面工具栏样式
TBSTYLE_LIST 列表样式,文本显示在按钮右铡
TBSTYLE_TOOLTIPS 工具栏提示信息
TBSTYLE_TRANSPARENT 透明样式
TBSTYLE_WRAPABLE 多行显示
2.创建图像列表
创建图像列表要添加头文件和库文件
#include <commctrl.h>
#pragma comment(lib,“comctl32.lib”)
//a.创建图像列表
int cx=32;
int cy=32;
HIMAGELIST hImageList=ImageList_Create(cx,cy,ILC_COLOR32|ILC_MASK,2,1);
ImageList_SetBkColor(hImageList, CLR_NONE);//CLR_NONE设置成透明的
//b.加载资源位图
HBITMAP hBitmap=LoadBitmap(GetModuleHandle(NULL),MAKEINTRESOURCE(uBitmapID));
//c.添加位图到图像列表中
ImageList_Add(hImageList,hBitmap,nullptr);
//d.设置图像列表和工具栏关联
SendMessage(hToolBar,TB_SETIMAGELIST,0,(LPARAM)hImageList);
3.设置按钮样式,显示文本,图像索引
工具栏按钮结构体:
TBBUTTON
//定义6个按钮
TBBUTTON tBtn1,tBtn2,tBtn3,tBtn4,tBtn5,tBtn6;
//tBtn1的数据结构
tBtn1.fsStyle=(BYTE)BTNS_BUTTON; //普通的按钮样式
tBtn1.fsState=(BYTE)TBSTATE_ENABLED; //按钮状态
tBtn1.idCommand=10001; //按钮id标记
tBtn1.iBitmap=0; //按钮显示的图像索引
tBtn1.iString=(INT_PTR)TEXT("添加"); //按钮显示的文本
//tBtn2的数据结构
tBtn2.fsStyle=(BYTE)BTNS_BUTTON;
tBtn2.fsState=(BYTE)TBSTATE_ENABLED;
tBtn2.idCommand=10002;
tBtn2.iBitmap=1;
tBtn2.iString=(INT_PTR)TEXT("修改");
//tBtn3,tBtn4为单选样式
tBtn3.fsStyle=(BYTE)TBSTYLE_CHECK | TBSTYLE_GROUP; //单选按钮样式
tBtn3.fsState=(BYTE)TBSTATE_ENABLED;
tBtn3.idCommand=10003;
tBtn3.iBitmap=2;
tBtn3.iString=(INT_PTR)TEXT("分类查看");
tBtn4.fsStyle=(BYTE)TBSTYLE_CHECK | TBSTYLE_GROUP; //单选按钮样式
tBtn4.fsState=(BYTE)TBSTATE_ENABLED;
tBtn4.idCommand=10004;
tBtn4.iBitmap=3;
tBtn4.iString=(INT_PTR)TEXT("查询所有");
//分隔栏
tBtn5.fsStyle=(BYTE)TBSTYLE_SEP ; //分隔栏样式
tBtn5.fsState=(BYTE)TBSTATE_ENABLED;
tBtn5.idCommand=0;
tBtn5.iBitmap=0;
tBtn5.iString=0;
//复选按钮样式
tBtn6.fsStyle=(BYTE)TBSTYLE_CHECK ; //复选选按钮样式
tBtn6.fsState=(BYTE)TBSTATE_ENABLED;
tBtn6.idCommand=10005;
tBtn6.iBitmap=4;
tBtn6.iString=(INT_PTR)TEXT("窗口置顶");
//把6个按钮组成按钮数组
TBBUTTON btnArray[]={tBtn1,tBtn2,tBtn3,tBtn4,tBtn5,tBtn6};
//设置按钮数组与工具栏关联
SendMessage(hToolBar,TB_ADDBUTTONS,6,(LPARAM)btnArray);
3.1按钮样式
TBSTYLE_BUTTON 普通的按钮样式
TBSTYLE_SEP 分隔栏样式
TBSTYLE_CHECK 复选框样式,按下不自动弹起
TBSTYLE_GROUP 按钮分组,和TBSTYLE_CHECK一起使用组成单选按钮样式
4.自动调整大小适应窗口
如果窗口大小改变要在WM_SIZE消息中也要添加自动调整大小
SendMessage(hToolBar,TB_AUTOSIZE,0,0);
5.显示/隐藏按钮文本
BOOL bShowString=TRUE;//真为显示,假为不显示
SendMessage(hToolBar,TB_SETMAXTEXTROWS,(bShowString?1:0),0);