当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 在工具栏按钮上添加文本标签

VC++
用VC++创建自定义向导程序
自定义 CRichEditCtrl 控件
Office 2000 风格的停泊、智能型菜单
黑客攻击手段之偷梁换柱
完善 CPopupText 类
让工具条显示256色图像
定制编辑框的上下文菜单
列表控件排序功能的实现
一个优秀的网格控件CGridCtrl
如何用代码动态添加控件
如何在编辑框中使用IAutoComplete接口
应用程序中添加“Coolbars”的简单方法
介绍一个有Toolbar功能的可重用类 CPopupText
在工具栏按钮上添加文本标签
类似Dreamweaver的颜色选择器
如何设置ListView控件的完全行(Full Row)选项
如何enable/disable菜单项
关于CEdit控件的透明 --作者:monsoon
动态菜单项、状态条提示、工具条提示问题
CAnimateCtrl::Open的使用问题

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 196 ::
收藏到网摘: n/a


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

作者:赵新国

一、前 言

对于工具栏,我想大家一定不陌生,它直观,使用方便,它给应用程序的用户带来极大的方便.对VC++程序员来说,为自己开发的软件加上一个工具栏并不难,几乎每本介绍VC++的书都少不了介绍这方面的内容,并且,如果在开发初期就想加入工具栏的话,就更简单了,MFC 可自动为您生成工具栏.可是我们所说的这些工具栏都有一个共同的特点,它们的每个工具按钮上只有一个位图直观地向用户显示它的功能,将鼠标移动到某个工具按钮上后,很快就弹出一个标签(ToolTips),以文字的形式表明它的功能.
作为微软用户,我们最熟悉的莫过于微软的浏览器了,它的工具栏是可以定制的,可以在工具按钮上只显示位图,并采取ToolTips技术,也可在工具栏上同时显示位图和文本标签(可谓"图文并茂").我想如果我们的软件也有这个功能的话,会不会使得我们的软件对用户更友好,使用更方便呢? 本文详细介绍了实现的具体步骤并给出完整的示例工程供参考。

下载示例工程 16.6K


示例代码运行效果图

二、主要函数


下面我们就来介绍这个功能的实现,首先介绍几个相关的函数:
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)
这个函数用于设置/取消工具按钮的ToolTips功能.

4.CMainFrame::ShowControlBar(CControlBar * pBar,BOOL bShow, BOOL bDelay)
这个函数用于设置工具栏或状态栏的显示与否.
pBar: 指向被设置工具栏或状态栏对象的指针
bShow: 为TRUE,则显示工具栏或状态栏 否则隐藏;
bDelay: 为TRUE,则延迟显示时间,否则立刻显示工具栏或状态栏
 
 
三、前期工作

了解了这几个函数后,我们就可以为工具栏添加文本标签了.
首先我们为CMainFrame类添加两个变量
1)BOOL类型的成员变量m_bTextTips,可以是私有变量,用于存储文本标签显示与否的状态.
2)SIZE类型的成员变量m_sizeMax,用于存储按钮的最大尺寸
方法:在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)搭配使用,
对该函数的使用,