在VC++工具栏按钮上添加文本标签

2016-02-19 21:43 75 1 收藏

下面图老师小编跟大家分享一个简单易学的在VC++工具栏按钮上添加文本标签教程,get新技能是需要行动的,喜欢的朋友赶紧收藏起来学习下吧!

【 tulaoshi.com - 编程语言 】

  一、前 言

  对于工具栏,我想大家一定不陌生,它直观,使用方便,它给应用程序的用户带来极大的方便.对VC++程序员来说,为自己开发的软件加上一个工具栏并不难,几乎每本介绍VC++的书都少不了介绍这方面的内容,并且,如果在开发初期就想加入工具栏的话,就更简单了,MFC 可自动为您生成工具栏.可是我们所说的这些工具栏都有一个共同的特点,它们的每个工具按钮上只有一个位图直观地向用户显示它的功能,将鼠标移动到某个工具按钮上后,很快就弹出一个标签(ToolTips),以文字的形式表明它的功能.

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  作为微软用户,我们最熟悉的莫过于微软的浏览器了,它的工具栏是可以定制的,可以在工具按钮上只显示位图,并采取ToolTips技术,也可在工具栏上同时显示位图和文本标签(可谓"图文并茂").我想如果我们的软件也有这个功能的话,会不会使得我们的软件对用户更友好,使用更方便呢? 本文详细介绍了实现的具体步骤并给出完整的示例工程供参考。

 
  示例代码运行效果图

  二、主要函数

  下面我们就来介绍这个功能的实现,首先介绍几个相关的函数:

  1.CToolBar::SetSizes(SIZE sizeButton,SIZE sizeImage)

  我想不用介绍,朋友们也都能猜出这个函数的功能了吧.它用于设置工具按钮的大小以及它上面的位图的大小.这个函数有两个参数,其中,sizeButton用于指定按钮的大小,sizeImage用于指定位图的大小.需注意的是:这两个参数的cx域和cy域都必须大于零,并且,sizeButton的宽度(cx)至少要比sizeImage的宽度大7,高度(cy)至少大6.

  2.CToolBar::SetButtonText(int nIndex , LPCTSTR lpstText)

  这个函数用于设置工具按钮上所显示的文字,nIndex用于指定所设置的工具按钮在工具栏中基于0的索引值(包括分割符),即第nIndex+1个工具按钮将被设置,lpstText就是指定所要显示的文字了.

  3.CToolBar::EnableToolTips(BOOL bEnable)

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  这个函数用于设置/取消工具按钮的ToolTips功能.

  4.CMainFrame::ShowControlBar(CControlBar * pBar,BOOL bShow, BOOL bDelay)

  这个函数用于设置工具栏或状态栏的显示与否.

  pBar: 指向被设置工具栏或状态栏对象的指针

  bShow: 为TRUE,则显示工具栏或状态栏 否则隐藏;

  bDelay: 为TRUE,则延迟显示时间,否则立刻显示工具栏或状态栏

  三、前期工作

  了解了这几个函数后,我们就可以为工具栏添加文本标签了.

  首先我们为CMainFrame类添加两个变量

  1)BOOL类型的成员变量m_bTextTips,可以是私有变量,用于存储文本标签显示与否的状态.

  2)SIZE类型的成员变量m_sizeMax,用于存储按钮的最大尺寸---www.bianceng.cn

  方法:在Workspace窗口的ClassView视图中右键单击CMainFrame类,在弹出的快捷菜单中单击Add Member Variable...菜单项.在弹出的对话框中如下输入即可:

 

  我们先进行用户界面的编写,如下:

  1.在CMainFrame类的结构函数CMainFrame()中加入m_bTextTips的初始化代码,如下:

  CMainFrame::CMainFrame() {
    m_bTextTips=AfxGetApp()-GetProfileInt("Setting","m_bTextTips",1);
}在此我们使用了函数CWinApp::GetProfileInt("Setting","m_bTextTips",1),它的原形是这样的:

  UINT GetProfileInt( LPCTSTR lpszSection, LPCTSTR lpszEntry, int nDefault );

  它和下面的函数CWinApp::Write rofileInt("Setting","m_bTextTips",m_bTextTips)搭配使用,

  对该函数的使用,您可参考帮助文件,本文不再赘述.

  2.在CMainFrame类的析构函数~CMainFrame()中加入如下代码保存文本标签的显示状态:

  CMainFrame::~CMainFrame() {    AfxGetApp()-WriteProfileInt("Setting","m_bTextTips",m_bTextTips);
}

  3.加入相应的菜单项,用于控制文本标签的显示与否,如下:


  在属性对话框中,选中Checked复选框,ID号为:ID_TOOL_TEXTTIPS.

  4.用ClassWizard加入该菜单项的命令处理函数和接口更新处理函数,并加入以下代码:

  void CMainFrame::OnToolTexttips()
  {
    m_bTextTips = !m_bTextTips; } void CMainFrame::OnUpdateToolTexttips(CCmdUI* pCmdUI) {
    pCmdUI-SetCheck(m_bTextTips);
}

  三、功能实现

  以上完成了用户接口的编写工作,然后添加文本标签,步骤如下:

  1.在CMainFrame类的实现文件开始部分假如静态数组,用于存放文本标签,如下:

  #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__;
#endif static TCHAR *TextTips[] = {"新建","打开","存盘","","剪切","复制","粘贴","","打印","","关于",""};2.用ClassWizard为CMainFrame添加一成员函数:void CMainFrame::UpdateToolBar(BOOL bRecalc = TRUE);用于更新工具条

  void CMainFrame::UpdateToolBar(BOOL bRecalc) //bRecalc用于指示是否重新计算最大尺寸 {
CRect rect;
SIZE sizeButton,sizeImage;
if(bRecalc) {
m_sizeMax.cx = 0;
m_sizeMax.cy = 0;
//取得最大尺寸
for (int i=0;im_wndToolBar.GetCount();i++) {
m_wndToolBar.SetButtonText(i,TextTips[i]);
m_wndToolBar.GetItemRect(i,rect);
m_sizeMax.cx = __max(rect.Size().cx, m_sizeMax.cx);
m_sizeMax.cy = __max(rect.Size().cy, m_sizeMax.cy);
}
}
//设置按钮尺寸 sizeButton.cx = m_bTextTips ? m_sizeMax.cx : 23;
sizeButton.cy = m_bTextTips ? m_sizeMax.cy : 22;
sizeImage.cx = 16;
sizeImage.cy = 15;
m_wndToolBar.SetSizes(sizeButton,sizeImage); ShowControlBar(&m_wndToolBar,FALSE,FALSE); ShowControlBar(&m_wndToolBar,TRUE,FALSE);
m_wndToolBar.RedrawWindow();
}3.在CMainFrame::OnCreate()函数中,就在return 0;之前加入如下代码:

  UpdateToolBar();///更新工具条
return 0;4.实现控制菜单的功能,在菜单的命令处理函数中加入粗体代码:

  void CMainFrame::OnToolTexttips()
  { m_bTextTips = !m_bTextTips; UpdateToolBar(FALSE);///FALSE参数表示不重新计算最大按钮 }5.为了使WINDOWS系统参数改变后能够自动调整工具条大小,我们需要添加WM_SETTINGCHANGE消息处理函数OnSettingChange,并加入粗体代码:

  void CMainFrame::OnSettingChange(UINT uFlags, LPCTSTR lpszSection)
  { CFrameWnd::OnSettingChange(uFlags, lpszSection); UpdateToolBar();
} 至此,所有任务已经完成,请编译并运行该程序,单击TextTips按钮,OK!

  注:本文假定您的程序已经加入了工具栏.

来源:https://www.tulaoshi.com/n/20160219/1626970.html

延伸阅读
标签: 电脑入门
快速访问工具栏浮动在Word2007窗口的左上角,允许用户将最常使用的命令或按钮添加到此处,快速访问工具栏是Word2007窗口中唯一允许用户自定义的窗口元素。将常用命令或按钮添加到快速访问工具栏的步骤如下所述: 第1步,打开Word2007窗口,并切换到任意功能区。 第2步,右键单击准备放置到快速访问工具栏的命令或按钮,在打开的快捷菜单中选...
标签: windows10
Win10文件管理加工具栏添加"共享"按钮   只要你在文件管理器中选择相应的文件,点击共享按钮可以打开右侧的共享Charm。目前在Win10技术预览版中,微软为文件管理器(File Explorer)的工具栏共享中加入了共享按钮(一个黑色共享按钮)。 Windows 10 比如说,你选择了图片文件,点击共享可以进行以邮件附件发送,或分...
标签: 电脑入门
只要你在文件管理器中选择相应的文件,点击共享按钮可以打开右侧的共享Charm。目前在Win10技术预览版中,微软为文件管理器(File Explorer)的工具栏共享中加入了共享按钮(一个黑色共享按钮)。 Windows10 比如说,你选择了图片文件,点击共享可以进行以邮件附件发送,或分享到Facebook或Twitter(前提是安装这些应用)。微软称这个功能还在...
如何实现工具栏的下拉箭头按钮 作者/NorthTibet 下载源代码 论坛中有人曾经问过这样的问题:如何在C++/MFC程序中实现类似IE工具栏中带下拉箭头的按钮,如图一所示: 图一 IE工具栏中带下拉箭头的按钮 本文将告诉你如何实现,方法其实很简单...
如何添加百度工具栏以及隐藏或显示百度工具栏 百度工具栏是一款免费的浏览器工具栏,安装后无需登录百度网站即可体验百度搜索的强大功能,搜网页、搜歌曲、搜图片、搜新闻,无所不能!另外利用百度工具栏的自定义搜索功能,还可以实现对其他网站的搜索。 百度工具栏安装成功后,您可以在以下地方找到它: 控制面板添加/删除程...

经验教程

367

收藏

11
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部