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

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 202 ::
收藏到网摘: 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)搭配使用,
对该函数的使用,