MFC工具栏资源及CToolBar类

MFC工具栏资源及CToolBar类:
MFC工具栏:
一个工具栏是一个Windows控件,它允许用户通过点击一个按钮,而不是使用菜单执行窗体上的一些行动。
1.工具栏提供了一组方便的按钮,通过将最易访问的操作作为按钮来简化了用户的工作
2.工具栏可以使此类常用操作更接近用户
3.工具栏通常显示在主菜单下
4.它们可以配备按钮,但有时其按钮或某些按钮带有标题
5.工具栏也可以配备其他类型的控件

环境WIN10,VS2013
1.新建一个对话框工程(单文档默认有工具栏)
在这里插入图片描述

2.切换到资源视图,右键–添加–资源
在这里插入图片描述

3.选择Toolbar,然后点击新建
在这里插入图片描述

这样就多了一个Toolbar文件夹
在这里插入图片描述

4.点开文件夹,在IDR_TOOLBAR1右键–属性,给他改一个有意义的名字,这里我改为IDR_TOOLBAR_X

在这里插入图片描述

更改后名字就发生改变
在这里插入图片描述

5.然后双击IDR_TOOLBAR_X,可以看到下图的窗口,上面的A是可以在工具栏上的每一个东西上面写字,默认只有一个,当你给第一个写了字 或者画了东西,他会再创建一个出来
在这里插入图片描述

6.我们在工具栏上分别写上XY, 如下图
在这里插入图片描述

7.工具栏资源已经创建完毕,接下来就是使用
先给对话框类添加一个成员:CToolBar m_wndToolBar;
在这里插入图片描述

8.然后在对话框初始化函数中添加创建以及显示工具栏的代码:
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD |
WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS |
CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_TOOLBARDEMO))
{
EndDialog(IDCANCEL);
}
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST, 0);
m_wndToolBar.MoveWindow(10, 10, 500, 25, 1);
在这里插入图片描述

RepositionBars()函数–显示状态、工具栏
运行之后工具栏就显示了:
在这里插入图片描述

但是点击X、Y按钮并没有反应,因为没有写消息响应函数,现在切换到资源视图,双击IDR_TOOLBAR_X,我们就看到了:
在这里插入图片描述

9.左键点击X按钮,然后右键属性修改下ID,这里我改为ID_BUTTON_X,然后按钮Y也一样的步骤改为ID_BUTTON_Y
10.切换到类视图,找到对话框类,右键–类向导

在这里插入图片描述

11.在类向导对话框中,找到我们的对话框类,然后找到工具栏按钮的ID,添加COMMAND消息的处理函数
在这里插入图片描述

12.在消息处理函数中添加代码:
在这里插入图片描述

13.运行,然后点击按钮X:
*在这里插入图片描述*

工具栏上面的按钮可以跟菜单的ID一样,这样点击工具栏上的按钮和点击某个菜单的功能就是一样的了,如果工具栏某个按钮和菜单ID一样,写了菜单的消息响应 就可以不用写工具栏按钮的消息处理函数了。

CToolBar类的主要成员函数:
1.virtual BOOL CreateEx(
CWnd* pParentWnd,
DWORD dwCtrlStyle = TBSTYLE_FLAT,
DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,
CRect rcBorders = CRect(0, 0, 0, 0),
UINT nID = AFX_IDW_TOOLBAR
);创建工具栏对象。
参数pParentWnd为工具栏父窗口的指针。
参数dwCtrlStyle为工具栏按钮的风格,默认为TBSTYLE_FLAT,即“平面的”。
参数dwStyle为工具栏的风格,默认取值WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,由于是主 框架窗口的子窗口,所以要有WS_CHILD和WS_VISIBLE风格,CBRS_ALIGN_TOP风格表示工具栏位于父窗口的顶部, 各种风格可以参见MSDN的Toolbar Control and Button Styles中的定义。
参数rcBorders为工具栏边框各个方向的宽度,默认为CRect(0, 0, 0, 0),即没有边框。
参数nID为工具栏子窗口的ID,默认为AFX_IDW_TOOLBAR。
2.BOOL LoadBitmap(UINT nIDResource);为工具栏加载位图。
参数nIDResource为位图资源的ID。
成功则返回TRUE,否则返回FALSE。
注意,这里的位图资源应当为每个工具栏按钮都提供位图,如果图片不是标准大小(16像素宽,15像 素高),则需要调用SetSizes成员函数调整按钮大小和图片大小。
3.BOOL LoadToolBar(UINT nIDResource);加载由nIDResource指定的工具栏。
参数nIDResource为要加载的工具栏的资源ID。
成功则返回TRUE,否则返回FALSE。
4.void SetSizes(SIZE sizeButton,SIZE sizeImage);设置工具栏按钮的大小和图片的大小。
参数sizeButton为工具栏按钮的像素大小。
参数sizeImage为图片的像素大小。
5.void SetButtonStyle(int nIndex,UINT nStyle);设置工具栏按钮或分隔线的风格,或者为按钮分组。
参数nIndex为将要进行设置的按钮或分隔线的索引。
参数nStyle为按钮风格,可以是以下取值:
TBBS_BUTTON 标准按钮(默认)
TBBS_SEPARATOR 分隔条
TBBS_CHECKBOX 复选框
TBBS_GROUP 标记一组按钮的开始
TBBS_CHECKGROUP 标记一组复选框的开始
TBBS_DROPDOWN 创建下拉列表按钮
TBBS_AUTOSIZE 按钮的宽度根据按钮文本计算,而不基于图片大小
TBBS_NOPREFIX 按钮的文本没有快捷键前缀
6.UINT GetButtonStyle(int nIndex) const;获取工具栏按钮或分隔条的风格。风格可参考SetButtonStyle。
参数nIndex为按钮或分隔条的索引。
7.BOOL SetButtonText(int nIndex,LPCTSTR lpszText);设置工具栏按钮的文本。
参数nIndex为工具栏按钮的索引。
参数lpszText为指向要设置的文本字符串的指针。
设置成功则返回TRUE,否则返回FALSE。
8.CString GetButtonText(int nIndex) const;获取工具栏按钮上显示的文本。
参数nIndex为工具栏按钮的索引。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值