一、带图标工具栏的创建:

第一步:将bmp位图或是ICON图标资源加入到资源视图中:我这里是bmp资源,添加资源时要按照你想要的顺序添加

第二步,在响应的头文件中定义CToolBar对象和CImageList对象:

private:CToolBar m_ToolBar;CImageList m_ImageList;

第三步,在对话框的初始化函数中进行带图标工具栏的初始化操作:

/*****带图标工具栏的添加*****/m_ImageList.Create(32,32,ILC_COLOR24|ILC_MASK,1,1);//创建图像列表CBitmap bmp;for (int i=0;i<9;i++)//向图像列表中添加图像{bmp.LoadBitmap(IDB_BITMAP1+i);m_ImageList.Add(&bmp,RGB(255,255,255));bmp.DeleteObject();}UINT BtnArray[10];//定义工具栏命令ID数组BtnArray[0]=IDB_BITMAP1;BtnArray[1]=IDB_BITMAP2;BtnArray[2]=IDB_BITMAP3;BtnArray[3]=IDB_BITMAP4;BtnArray[4]=IDB_BITMAP5;BtnArray[5]=IDB_BITMAP6;BtnArray[6]=ID_SEPARATOR;BtnArray[7]=IDB_BITMAP7;BtnArray[8]=IDB_BITMAP8;BtnArray[9]=IDB_BITMAP9;m_ToolBar.CreateEx(this);//创建工具栏,默认置顶m_ToolBar.SetButtons(BtnArray,10);m_ToolBar.SetSizes(CSize(60,60),CSize(32,32));//设置工具栏按钮大小和按钮图像大小m_ToolBar.SetButtonText(0,_T("文件管理"));//设置工具栏文本m_ToolBar.SetButtonText(1,_T("屏幕监控"));m_ToolBar.SetButtonText(2,_T("超级终端"));m_ToolBar.SetButtonText(3,_T("进程管理"));m_ToolBar.SetButtonText(4,_T("服务管理"));m_ToolBar.SetButtonText(5,_T("卸载主机"));m_ToolBar.SetButtonText(7,_T("生成客户"));m_ToolBar.SetButtonText(8,_T("程序设置"));m_ToolBar.SetButtonText(9,_T("关于软件"));m_ToolBar.GetToolBarCtrl().SetImageList(&m_ImageList);//设置工具栏按钮显示图标RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);//显示工具栏

进行以上三步后,带图标的工具栏就已经设置完成,如下图:

另:

1、如果你插入的是ICON图标资源不是位图资源,只是向图像列表中添加图像的方法有所改变:

m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON_LINE));

二、

如果你不想要设置工具栏中图标按钮的文本,而要使用提示(ToolTip)功能,可以进行如下几步操作:

创建带图标的工具栏时,以上几步基本不变,唯一改变的是创建工具栏对象时第三个参数要添加:CBRS_TOOLTIPS样式。

m_ToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP | CBRS_TOOLTIPS | CBRS_SIZE_DYNAMIC ,CRect(0, 0, 0, 0));CBRS_TOOLTIPS | CBRS_SIZE_DYNAMIC ,CRect(0, 0, 0, 0));

其次,在头文件中添加智能提示控件变量的声明:

CToolTipCtrl  m_pToolTipCtrl;

创建一个智能提示控件:

if( !m_pToolTipCtrl.Create(this) ) return FALSE;

其次,向智能提示控件中添加需要具有提示功能的控件,并启用目标窗口的TOOLTIP属性:

m_pToolTipCtrl.AddTool(GetDlgItem(IDI_ICON_CANCEL),LPSTR_TEXTCALLBACK);m_pToolTipCtrl.AddTool(GetDlgItem(IDI_ICON_EXIT),LPSTR_TEXTCALLBACK);m_pToolTipCtrl.AddTool(GetDlgItem(IDI_ICON_LINE),LPSTR_TEXTCALLBACK);m_pToolTipCtrl.AddTool(GetDlgItem(IDI_ICON_OK),LPSTR_TEXTCALLBACK);m_pToolTipCtrl.AddTool(GetDlgItem(IDI_ICON_PEN),LPSTR_TEXTCALLBACK);m_pToolTipCtrl.AddTool(GetDlgItem(IDI_ICON_RECT),LPSTR_TEXTCALLBACK);m_pToolTipCtrl.AddTool(GetDlgItem(IDI_ICON_SAVE),LPSTR_TEXTCALLBACK);EnableToolTips(TRUE);

最后,添加如下消息映射:

1、映射函数的定义:

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

2、添加消息映射:

ON_NOTIFY_EX(TTN_NEEDTEXT, 0, &CClipScreenToolDlg::ToolTipFxn)

3、消息映射函数的实现:

BOOL CClipScreenToolDlg::ToolTipFxn(UINT id, NMHDR *pNMHDR, LRESULT *pResult)
{UNREFERENCED_PARAMETER(id);  TOOLTIPTEXT *pTTT=(TOOLTIPTEXT *)pNMHDR;  UINT_PTR nID=pNMHDR->idFrom;  if (pTTT->uFlags && TTF_IDISHWND)  {  switch (nID)  {  case IDI_ICON_LINE:pTTT->lpszText = _T("画线");break;case IDI_ICON_RECT:pTTT->lpszText = _T("矩形");break;case IDI_ICON_PEN:pTTT->lpszText = _T("画笔");break;case IDI_ICON_CANCEL:pTTT->lpszText = _T("撤销");break;case IDI_ICON_SAVE:pTTT->lpszText = _T("保存");break;case IDI_ICON_EXIT:pTTT->lpszText = _T("关闭");break;case IDI_ICON_OK:pTTT->lpszText = _T("结束");break;default:break; }  //return TRUE;}  *pResult = 0;  return TRUE;
}

以上一、二两部分的说明使用的是两个不同的例子。

带图标工具栏的创建以及提示功能的添加相关推荐

  1. VC 创建具有提示功能的工具栏

    类CToolBar的对象是带有一行位图按钮和可选分隔线的控件条.这些按钮可以像普通按钮.核选按钮或单选按钮那样动作. Visual C++提供了两种创建一个工具条的方法.要使用资源编辑器(Resour ...

  2. 【MFC】具有提示功能的工具栏

    00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 在文档\视图结构的应用 ...

  3. 【MFC】带图标的工具栏

    00. 目录 文章目录 00. 目录 01. 案例概述 02. 开发环境 03. 关键技术 04. 程序设计 05. 秘笈心法 06. 源码下载 07. 附录 01. 案例概述 默认情况下,MFC中提 ...

  4. AxureRP8实战手册-案例1(文本框:带图标文字提示)

    实战案例篇 本篇包含110种实战案例,案例内容均来自互联网知名网站或应用.案例中所包含的基础操作不做详细介绍,如有疑问请参考基础操作篇. 本篇内容由浅至深.前四章围绕基础知识点结合案例进行讲解:最后两 ...

  5. Qt添加工具栏(带图标)

    Qt添加工具栏(带图标) 一.准备图片   首先找到自己喜欢的图片存放到对应工程的目录下面,这是为了后面添加图标做准备. 二.创建动作 进入工程的UI设计界面: 点击如下的文件夹按钮新建动作: 填写信 ...

  6. 随身wifi,360wifi,猎豹wifi一边去,不花钱windows自带开启虚拟wifi,随身wifi功能

    是不是感觉买一个随身wifi,360wifi,钱也不多对吧!其实我们自己也可以开启.压根就不用花这钱了. 如果你说:我不买买买,我又猎豹wifi. 好吧!一边去,当我没说.其实猎豹wifi,也是类似如 ...

  7. Ajax实现百度搜索框自动提示功能

    Ajax实现百度搜索框自动提示功能 当你在搜索框内写入关键字时下拉框会匹配和你输入的关键字相匹配的信息 文章目录 Ajax实现百度搜索框自动提示功能 一.实现效果 二.代码实现 1.前端页面 2.后端 ...

  8. 百度搜索_如何打开Intellij IDEA的代码提示功能?

    Intellij IDEA是一款优秀的编程软件,相比较Eclipse之下它的用户群较小,但并不代表它的功能就比Eclipse差,如果用顺手了还是特别好用的.代码提示功能对于程序员来说非常重要,那么我们 ...

  9. 如何在vs 下敲linux代码且具有提示功能

    本文使用的是vs2010 如何在windows 下敲linux代码时具有提示功能那? 1 先安装vs2010 2 安装西红柿插件VA_X_Setup.官网现在地址https://www.wholeto ...

最新文章

  1. 小学一年级第一次上计算机课,小学一年级上册信息技术教案【三篇】
  2. 2020年关于SAP知识问答的一个新的尝试
  3. 神奇的事情--长见识了
  4. 嵌入式系统中的几个关键基本概念!
  5. pycharm python3.7环境_Python3+Pycharm+PyQt5环境搭建步骤图文详解
  6. 违反学校防疫规定,这所211高校两研究生被通报批评!
  7. HDU5926 Mr. Frog’s Game
  8. 最近使用VirtualBox安装虚拟机,频繁崩溃。是不是有什么隐藏限制?
  9. 计算机毕设项目论文介绍(Java智慧物业管理系统为例)
  10. Wowza服务器系列(1):介绍
  11. 怎么快速找到:附近的人
  12. 国际贸易术语解释通则(DES 目的港船上交货(……指定目的港))
  13. Android之NFC
  14. android智能电灯,X-Light智能灯泡
  15. Endnote文献管理方法
  16. C4D的GPU渲染器Octane和Redshift的渲染对比
  17. 现在Java程序员的薪资如何?有哪些就业方向
  18. Android 根据银行卡号查询银行名称
  19. 制作导出PDF中的PDF模板
  20. 《虹口区促进元宇宙产业发展的试行办法》的通知

热门文章

  1. #实验吧整理#拐弯抹角小结
  2. python中flag是啥_python中flag什么意思
  3. C#设计模式实现-中介者模式(Media Partten)
  4. laravel PHPExcel使用
  5. 学习大神作品(vue源码三)
  6. 【学习笔记1】C++除号“/”的使用
  7. 给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*‘、除号 ‘/‘ 以及求余符号 ‘%‘ 。
  8. 解决qt.qpa.plugin: Could not load the Qt platform plugin “xcb“ in ““ even though it was found.
  9. 初中几何辅助线口诀(含经典题解析)
  10. 关于WIN10 VS2015下调试DirectX11 DEMO错误的解决方案