VC MFC工具栏(CToolBar)控件(转)

本文介绍了如何在MFC中动态创建和管理工具栏控件,包括创建按钮、设置样式、加载资源、响应按钮事件等步骤,并展示了如何设置工具栏背景、显示真彩位图、添加鼠标停留提示信息、显示图标以及处理工具栏按钮的热点图片。通过CToolBar和CToolBarCtrl类,详细讲解了不同情况下的实现方法。
摘要由CSDN通过智能技术生成

工具栏

工具栏控件在控件面板里没有对应的选项(图标),但有一个工具栏控件类CToolBar,所以我们如果要创建一个工具栏控件并显示在窗口里的话,只能用代码来完成,事实上任何一种控件,都可以用代码创建,如CButton按钮类,现举一个用代码创建按钮控件并显示在窗口里的例子。

CButton类的Create成员函数可以创建一个按钮控件,这个函数的格式如下:
BOOL CButton::Create(
     LPCTSTR lpszCaption,//按钮显示的文本
     DWORD dwStyle,//按钮样式
     const RECT& rect,//按钮控件显示的区域(大小)相对于父窗口
     CWnd* pParentWnd,//按钮的父窗口(按钮属于哪个窗口)
     UINT nID//指明按钮控件ID号

    );
这个函数的第二个参数dwStyle是按钮控件的样式,也就是在可视化添加按钮控件时,右击按钮控件,选择属性,之后会弹出一个对话框,这个对话框有一个样式的选项,该参数即对应这个样式。

好了,了解了上面这些我们就来动态创建一个按钮吧,首先在对应话类里添加一个按钮类成员变量CButton m_Button;

然后在对话框编辑区里给对话框添加一个按钮控件(单击这个按钮创建按钮控件),然后添加这个按钮控件单击消息处理函数,并在函数添加以下语句:

 RECT ButtonRect;//按钮控件显示的区域(大小)相对于父窗口
 ButtonRect.left=10;
 ButtonRect.top=10;
 ButtonRect.right=80;
 ButtonRect.bottom=30;
 m_Button.Create("动态创建",WS_CHILD,ButtonRect,this,1115);
 m_Button.ShowWindow(SW_SHOW);//显示按钮控件

知道了怎样动态创建按钮控件,我们就来创建工具栏控件。

首先在对话类中添加一个CToolBar类成员变量CToolBar m_Toolbar;

然后在对话类文件中定义工具栏命令ID

#define ID_BUTTON1    501
#define ID_BUTTON2    502
#define ID_BUTTON3    503

接着我们就要创建工具栏资源了,用于工具栏按钮的显示图片

方法是进入ResourceView(资源视图选项卡),再随便选中一个选项,右击选择插入,在弹出的对话框里选中Toolbar,点新建。

接着创建三个按钮。如下图所示:

好了,下面把三个按钮ID号,改成上面宏定义的ID号,如果要改变“天”字按钮,选中该按钮,然后回车键,就会弹出一个对话框,

在ID项填入ID_BUTTON1,就可以了。接着依次把两个ID号改为ID_BUTTON2,ID_BUTOON3。在这个对话框里也可以改变工具栏按钮的大小。

接下来我们样在对话框类的OnInitDialog函数里的所有代码之后,return TRUE;之间添加以下语句:
     m_Toolbar.Create(this);//创建工具栏控件
     m_Toolbar.LoadToolBar(IDR_TOOLBAR1);//装载工具栏资源
  CRect rect(100,100,200,200);//
  m_Toolbar.MoveWindow(rect);//移动工具栏在父窗口的位置
  m_Toolbar.ShowWindow(SW_SHOW);//显示工具栏

但这样显示工具栏不是很方便,特别是当窗口大小改变后,还要计算工具栏在窗口中的位置,有没有什么方法,可以根据窗口大小自动调整工具栏到合适的位置呢?答案是肯定的,RepositionBars函数可以做到。实现方法如下,把上面的语句换成下面的:

  m_Toolbar.Create(this);//创建工具栏控件
    m_Toolbar.LoadToolBar(IDR_TOOLBAR1);//装载工具栏资源
  //该函数用于显示工具栏,并根据窗口大小自动调整工具栏的位置
  RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

 而响应工具栏按钮单击消息,跟前面介绍的添加按钮单击消息差不多,进入类向导,找到要添加的工具栏按钮ID,添加COMMAND消息响应函数,如下图:

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值