工具栏编程

1、用API创建工具栏,简单例子

之前定义了一个由3个16*16组成的位图,准备创建一个具有三个按钮的工具栏

TBBUTTON tbButtons[]={

{0,100,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0},

{1,200,TBSTATE_ENABLED,TBSTYLE_BUTTON|TBSTATE_WRAP|TBSTATE_ENABLED ,0,0},

{2,300,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0}

};

CreateToolbarEx(hWnd,WS_CHILD|WS_VISIBLE|TBSTYLE_FLAT,.....,16,16,16,16,sizeof(TBBUTTON));

这样即可:

其中:TBBUTTON结构中的第一元素为:按钮索引,接下来为:按钮的ID,按钮的初始风格等

 

2、用MFC的CToolBarCtrl类创建

CRect rt;

GetClientRect(&rt);

rt.bottom = rt.top + 24;

m_ctlTB.Create(WS_CHILD|WS_VISIBLET|BSTYLE_FLAT,rt,this,ID_TOOLBAR);

m_ctlTB.AddBitmap(3,IDB_BITMAP1);

m_ctlTB.AddButtons(3,tbButtons);

CToolBarCtrl只是API的简单包装,并没增加功能

 

 

3、用MFC的CToolBar类创建

可参考的例子很多,MSDN的例子:MFCIE介绍了如何创建类似IE的具有文字标签和下拉菜单风格的按钮

方法1:

构造CToolBar对象

CToolBar::Create或CToolBar::CreateEx创建工具栏

CToolBar::LoadToolBar加载位图

方法2:

构造CToolBar对象

CToolBar::Create或CToolBar::CreateEx创建工具栏

CToolBar::LoadBitmap加载位图

CToolBar::SetButtons设置按钮ID

两种方法区别在于是否利用toolbar资源

 

 

4、为什么工具栏用256以上就会失真

工具栏内部应该以ImageList管理位图,而默认是采用16色。为了使用256以有更高色

必须以ILC_COLOR8(256)或相应的值创建ImageList

然后TB_SETIMAGELIST消息给工具栏设置新的ImageList ,以同样的方法还可以设置工具栏的热点位图。

建议参考MSDN sample的<MfcIe>

 

5、工具栏的风格:

MSDN中按《Toolbar Control and Button Styles》索引即可得到所有风格。有些风格对

版本有要求,更详细请看MSDN。

TBSTYLE_FLAT: 使工具栏上的按钮表面平坦,按钮边界不会被绘出来,除非鼠标指针在上面

TBSTYLE_LIST: 按钮文本显示在按钮的左边

TBSTYLE_TOOLTIPS:如果用户将鼠标指针停留在按钮上较长时间就使按钮产生TTN_NEEDTEXT通知消息。

程序员负责为这个工具提示提供文本

TBSTYLE_WRAPABLE:使控件将其按钮排成多行以适应当前的控件大小

TBSTYLE_ALTDRAG:允许用户按住ALT来拖动按钮的位置

TBSTYLE_CUSTOMERASE:使控件处理WM_ERASEBKGND 消息时会产生NM_CUSTOMDRAW通知消息

TBSTYLE_TRANSPARENT:除按钮以外工具栏是透明的,文本显示在按钮下面

扩展风格:

TBSTYLE_EX_DRAWDDARROWS :使工具栏能创建具有下拉菜单的按钮

还可以使用以CBRS开头的控制条风格:

CBRS_TOP 控制条在框架窗口的顶部

CBRS_BOTTOM

CBRS_NOALIGN 当框架窗口改变大小时控制条不重置

CBRS_TOOLTIPS 控制条显示TOOPTIP信息

CBRS_SIZE_DYNAMIC

CBRS_SIZE_FIXED

CBRS_FLOATING

CBRS_FLYBY

CBRS_HIDE_INPLACE

 

还有以CCS开头的通用控件风格:

CCS_NORESIZE: 被创建的控制条的大小由CreateWindow API调用指定。该风格忽略以下4种风格

CCS_TOP: 控制条沿其父窗口框架顶部/底部/左/右对齐并且其宽度设置为系统标准

CCS_BOTTOM:

CCS_LEFT:

CCS_RIGHT:

CCS_NODIVIDER: 控制条自动沿其顶部绘制一条直线:通常用来将工具栏和菜单分隔开

CCS_ADJUSTABLE: 允许用户动态配置工具栏

CCS_NOMOVEY: 下面风格没有明显效果或是重复上面的风格

CCS_NOMOVEEX:

CCS_NOPARENTALIGN:

除此之处还有工具栏按钮的风格和按钮的状态。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值