工具栏使用

一、使用位图创建工具栏

1.头文件定义

CToolBar m_ToolBar;




2.BOOL CCreateToolBarDlg::OnInitDialog()

{
// TODO: Add extra initialization here
UINT array[11];
for (int i = 0;i<11;i++)
{
if (i==3 || i==7 || i==9)
array[i]= ID_SEPARATOR; //第4、8个按钮为分隔条
else
array[i]=i+1001;
}
m_ToolBar.Create(this);
m_ToolBar.SetButtons(array,11);
m_ToolBar.LoadBitmap(IDB_BITMAP1);  //加载位图
m_ToolBar.SetSizes(CSize(24,24),CSize(16,16)); //设置按钮和按钮位图大小
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
return TRUE;  // return TRUE  unless you set the focus to a control
}


3.添加消息响应



声明单击处理函数
afx_msg void OnNew();


添加消息映射
ON_COMMAND(1001, OnNew)


单击处理函数
void CCreateToolBarDlg::OnNew()
{
MessageBox("工具栏按钮单击事件");
}


二、使用图标创建工具栏

1.头文件定义

CToolBar m_ToolBar;//工具栏对象
CImageList m_ImageList;//列表视图对象


2.BOOL CCreateToolBarDlg::OnInitDialog()

{
// TODO: Add extra initialization here
//创建图像列表
m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);
//向图像列表中添加图标
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON8));



UINT array[11];
for(int i=0;i<11;i++)
{
if(i==3 || i==7 || i==9)
array[i] = ID_SEPARATOR; //第4、8、10个按钮为分隔条
else
array[i] = i+1001;
}
m_ToolBar.Create(this);
m_ToolBar.SetButtons(array,11);//设置工具栏按钮的索引
//关联图像列表
m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
m_ToolBar.SetSizes(CSize(40,40),CSize(32,32)); //设置按钮和图标的大小
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);//显示工具栏
return TRUE;  // return TRUE  unless you set the focus to a control
}


三.使用工具栏资源创建工具栏


BOOL CCreateToolBarDlg::OnInitDialog()
{
// TODO: Add extra initialization here
//创建工具栏
m_ToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_SIZE_DYNAMIC | CBRS_BORDER_TOP);
m_ToolBar.LoadToolBar(IDR_TOOLBAR1); //加载工具栏资源
//设置图象和按钮的大小
m_ToolBar.GetToolBarCtrl().SetBitmapSize(CSize(16,16));
m_ToolBar.GetToolBarCtrl().SetButtonSize(CSize(24,24));
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
return TRUE;  // return TRUE  unless you set the focus to a control
}


四、设置工具栏按钮提示

只要鼠标停留在一个工具栏按钮上,就会显示出这个按钮的功能描述
可以通过TTN_NEEDTEST消息的处理函数OnToolTipNotify实现,然后调用SetButtonText方法设置工具栏按钮文本

1.SetButtonText

BOOL SetButtonText(int nlndex,LPCTSTR lpszText);
nIndex:按钮命令ID
lpszText:按钮显示文本
然后在OnToolTipNotify消息处理函数中获得当前按钮文本,并在提示窗口中显示出来,获得按钮文本可以使用GetButtonText方法。

2.GetButtonText

CString GetButtonText(int nLndex)const;
void GetButtonText(int nIndex,CString&rString)const;
nIndex:按钮索引
rString:用于接收文本按钮


五、具有提示功能的工具栏

1.新建对话框,导入八个图标资源

2.对话框头文件声明变量

CToolBar m_ToolBar;
CImageList m_ImageList;
CString m_TipText;


3.对话框OnInitDialog创建工具栏



// TODO: Add extra initialization here
//创建图像列表
m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);
//向图像列表中添加图标
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON5));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON6));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON7));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON8));
UINT array[11];
for(int i=0;i<11;i++)
{
if(i==3 || i==7 || i==9)
array[i] = ID_SEPARATOR; //第4、8、10个按钮为分隔条
else
array[i] = i+1001;
}
m_ToolBar.Create(this);
m_ToolBar.SetButtons(array,11);
m_ToolBar.SetButtonText(0,"新建");//设置工具栏按钮文本
m_ToolBar.SetButtonText(1,"打开");
m_ToolBar.SetButtonText(2,"保存");
m_ToolBar.SetButtonText(4,"剪切");
m_ToolBar.SetButtonText(5,"复制");
m_ToolBar.SetButtonText(6,"粘贴");
m_ToolBar.SetButtonText(8,"打印");
m_ToolBar.SetButtonText(10,"帮助");
//关联图像列表
m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);
m_ToolBar.SetSizes(CSize(40,50),CSize(32,32)); //设置按钮和图标的大小
m_ToolBar.EnableToolTips(TRUE);//激活工具提示功能
RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
return TRUE;  // return TRUE  unless you set the focus to a control




4.对话框头文件声明OnToolTipNotyfy函数

afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );


5.添加映射

ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify)


6.添加处理函数

BOOL CToolTipDlg::OnToolTipNotify(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{
    TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
    UINT nID =pNMHDR->idFrom; //获取工具栏按钮ID
    if(nID)
    {
UINT nIndex = m_ToolBar.CommandToIndex(nID); //根据ID获取按钮索引
if(nIndex != -1)
{
m_ToolBar.GetButtonText(nIndex,m_TipText);//获取工具栏文本//获取工具栏文本
pTTT->lpszText = m_TipText.GetBuffer(m_TipText.GetLength()); //设置提示信息文本
pTTT->hinst = AfxGetResourceHandle();//获取资源句柄
return TRUE;
}
     }
     return FALSE;
}

7.代码



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值