win32sdk学习-简单的创建一个自己的工具栏

window程序中常使用的一个组件,就是工具栏了,基本上工具栏都是和菜单的选择是对应的。

在win32 api中有一个专门创建工具栏的函数(尽管msdn上说不建议使用)

CreateToolbarEx。

自定义的工具栏,除了使用默认系统提供的图像之外,就是使用自己的图片资源了,不知道是不是win32程序兼容的关系,工具栏的图片资源要是bmp并且是8位256色的,网上有其他很多使用真彩图片的办法。这里使用默认的函数创建,图片就需要是8位256色。

hWndToolBar=CreateToolbarEx(
	hwnd,	//窗口句柄
	WS_VISIBLE|WS_CHILD|TBSTYLE_FLAT|TBSTYLE_TOOLTIPS,//样式
	IDR_TOOL,22,//IDR_TOOL工具栏资源ID,第二个参数是图片资源上的按钮数量
        hInst,			//模块实例句柄
	IDR_TOOLBAR1,		//自定义图片的资源ID
	tbButtons,		//按钮结构数组地址
	22,			//显示的按钮数量
	0,0,16,16,		//图片大小
	sizeof(TBBUTTON));		//按钮结构size

返回的是一个工具栏句柄。

 

如果不是使用自定义图片资源,使用系统预定义位图的话,用模块句柄HINST_COMMCTRL(上面的模块实例句柄)和位图句柄IDB_STD_SMALL _COLOR(位图句柄就是上面的图片资源ID)来指定使用Comctl32.dll中的预定义位图。使用自定义图片资源的时候,图片大小是必须要指定的,如:0,0,16,16.表示16X16的图片。系统图片可以直接写0,0,0,0。

 

TBBUTTON结构

typedef struct _TBBUTTON { 
  int iBitmap; 	//按钮在图片资源中的索引,以0开始
  int idCommand; 	//按钮对应命令ID,一般和菜单命令对应
  BYTE fsState; 	//按钮类型
  BYTE fsStyle; 	//按钮样式
  DWORD dwData; 	//自定义数据
  int iString; 	//按钮字符串索引
} TBBUTTON,

按钮的类型有:

TBSTATE_CHECKED——按钮的类型是复选框按钮,并且按钮初始化为选中状态(即保持按下状态)。

TBSTATE_ENABLED——按钮被允许,如果不指定这个标志,按钮将显示为灰色,并且不会接收用户的动作。

TBSTATE_HIDDEN——隐藏状态,按钮不显示在工具栏上。

TBSTATE_INDETERMINATE——按钮处于灰化状态,但可以接收用户的动作。

TBSTATE_PRESSED——按钮处于按下状态。

TBSTATE_WRAP——在包含TBSTYLE_WRAPABLE风格的多行工具栏中,从此按钮开始换行。

按钮的样式:

TBSTYLE_BUTTON——标准按钮。

TBSTYLE_CHECK——复选框按钮(按钮状态在按下和凸起之间切换)。

TBSTYLE_GROUP——指定复选框按钮的分组边界。

TBSTYLE_CHECKGROUP——TBSTYLE_CHECK风格和TBSTYLE_GROUP风格的组合。

TBSTYLE_SEP——按钮之间的分隔线。


可以使用一个数组来表示多个按钮。

TBBUTTON tbButtons[]={
        {BNEW, IDM_NEW, TBSTATE_ENABLED, TBSTYLE_BUTTON},

        .....

       }

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值