如何使toolbar上的文字排在图标的右边(向IE那样)而不是在图标的下面

yajunmao 2004-11-25 09:38:48
用SetButtonText(0,"test") ,"test"出现在toolbar图标的下面,如何使toolbar上的文字排在图标的右边(向IE那样)
...全文
174 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingzai 2004-11-25
  • 打赏
  • 举报
回复
A toolbar can display text labels in two different ways: below the button icon or to the right of the icon. In order to display it at the right of the icon the style bit TBSTYLE_LIST needs to be specified when creating the toolbar.

The following steps show how to add button labels and resize the standard toolbar for an AppWizard generated MFC SDI or MDI application. The code handles the case of a regular toolbar or a toolbar with the list style set. TBSTYLE_LIST raises one problem that you need to be aware of: when hiding the text labels you need to remove this style bit in order for the button icons to be drawn correctly.



Create an SDI or MDI MFC AppWizard project.


Add a class derived from CToolBar to the project; in the code below, this is CMyToolBar.


Copy the following code to the .cpp file for the CMyToolBar class.



struct tbblabel
{
UINT id;
char *label;
};

static tbblabel standardBarLabels[] =
{
{ ID_FILE_NEW, "File New" },
{ ID_FILE_OPEN, "File Open" },
{ ID_FILE_SAVE, "File Save" },
{ ID_EDIT_CUT, "Cut" },
{ ID_EDIT_COPY, "Copy" },
{ ID_EDIT_PASTE, "Paste" },
{ ID_FILE_PRINT, "Print" },
{ ID_APP_ABOUT, "About" }
};

void CMyToolBar::SetLabels(BOOL bShow /*= TRUE*/)
{
if (m_rBigBtn.Size() != CSize(0, 0))
return;

// Get the first button size before adding the labels.
GetItemRect(0, &m_rSmallBtn);

int cButtons = sizeof(standardBarLabels) / sizeof(standardBarLabels[0]);
for( int nButton = 0; nButton < cButtons; nButton++ )
{
int nButtonIndex = CommandToIndex( standardBarLabels[nButton].id );
if (!SetButtonText( nButtonIndex, standardBarLabels[nButton].label ))
TRACE("failed SetButtonText(%d, \"%s\").\n",
nButtonIndex, standardBarLabels[nButton].label);
}

// Get the first button size after adding the labels.
GetItemRect(0, &m_rBigBtn);

ShowLabels(bShow);
}

void CMyToolBar::ShowLabels(BOOL bShow /*= TRUE*/)
{
// Remember that if the toolbar had the TBSTYLE_LIST set
// the first time ShowLabels() was called.
static BOOL bIsList = GetStyle() & TBSTYLE_LIST;
// Set the toolbar button sizes.
if (bShow)
{
if (bIsList)
ModifyStyle(0, TBSTYLE_LIST);
SetSizes(m_rBigBtn.Size(), m_sizeImage);
}
else
{
if (bIsList)
ModifyStyle(TBSTYLE_LIST, 0);
SetSizes(m_rSmallBtn.Size(), m_sizeImage);
}
}
Note that the last statement in CMyToolBar::ShowLabels() uses the protected member variable of CToolBar, m_sizeImage. As this is an undocumented member variable of CToolBar, this variable may not exist in future implementations of CToolBar.


Add a declaration for the SetLabels() and ShowLabels() functions to the CMyToolBar class. Also add two protected data members of type CRect as shown below:


public:
void SetLabels(BOOL bShow /*= TRUE*/);
void ShowLabels(BOOL bShow /*= TRUE*/);
protected:
CRect m_rBigBtn;
CRect m_rSmallBtn;
Change the type of the CMainFrame::m_wndToolBar member to CMyToolBar. The file where CMyToolBar is defined must be #included in the MainFrm.h file.


After the toolbar has been created in CMainFrame::OnCreate() call SetLabels() like this:
m_wndToolBar.SetLabels(m_wndToolBar.GetStyle() & TBSTYLE_LIST);
This call ensures that the toolbar is initially displayed with the text labels if the toolbar has the TBSTYLE_LIST style or without, if the toolbar does not have this style.


You can now add a message handler to your main frame class that toggles the toolbar labels on/off by calling CMyToolBar::ShowLabels() and RecalcLayout().



m_wndToolBar.ShowLabels(TRUE);
RecalcLayout(TRUE);
Kudeet 2004-11-25
  • 打赏
  • 举报
回复
它是属于扩展风格的。
Kudeet 2004-11-25
  • 打赏
  • 举报
回复
加上TBSTYLE_LIST风格文本就会显示在按钮右边
an_8 2004-11-25
  • 打赏
  • 举报
回复
帮你顶
win7下可以用的绿色ie6(xp下也可以用),此版集成调试工具IEDevToolBar中文版和增强保存工具save as插件。 一、save as插件使用:正常的网页另存为总是不能完美保存所有文件,此工具可完美保存,非常方便查看css样式及图片,点击浏览器右键→增强保存为即可。 二、IEDevToolBar点击浏览器工具栏黄色图标即可,其实此插件实用价值不大! 解压后点击bin目录下VirtIE6.exe即可,杀毒软件提示均为误报,点击信任即可! 插件使用方法:点击查看→浏览器栏→ie developer toolbar即可 插件介绍: 微软官方出口的IEDevToolBar,这是一个免费的专门为Web开发人员制作的IE插件,IE插件IEDevToolBar可以帮助我们分析网站的布局结构,有助于我们学习和分析页面的CSS,其主要功能有: 这是一个免费的转为Web开发人员制作的IE插件,做博客Skin时用到的主要功能有: 1.以树结构查看CodeDom,并查看每个Element属性,可以使用鼠标点击选中Element,这个在我们制作Skin时很有用 2.生成图片报表,就是将页面上说有出现的图片生成一份详细的报表,这样就省的我们自己去找图片路径和量图片大小等等。 3.高亮显示表格,表格单元,Div等的边框,这个在我们调整布局时也是很有用 4.页面尺子,可以然你任意在页面上度量长度,这个是大大的提高了我们的工作效率,不用为了量个长度而抓图再用画图工具量
1,listview.ZIP 演示使用listview控制, 作出资源管理器中目录树中的效果 (7KB)2,dirview.ZIP 装入整个 c 盘目录到 treeview (4KB)3,progress.ZIP 演示使用win95的进度条(3KB)4,progbar.ZIP 进度条演示(4KB)5,slider.ZIP 使用滑动控制(6KB)6,statusbar.ZIP 控制状态条的例子(10KB) 7,tabstrip.ZIP tabstrip控制的例子 (10KB)8,treeview.ZIP 存储/恢复treeview的例子(10KB) 9,treelist.ZIP 使用treeview和listview显示数据库的数据 (7KB)10,combohg.ZIP 改变combobox的下拉高度(2KB) 11,dragtree.ZIP 拖拉树节点的例子(7KB) 12,lvstyles.ZIP 演示listview控制的例子(27KB) 13,make_toolbar_flat.ZIP 实现浮动工具条的例子(1KB) 14,code_coolbar.ZIP ie4风格的工具条(26KB)15,djmeter.ZIP 实现进度条的例子(10KB) 16,dupes.ZIP 一个combobox的例子(3KB) 17,formdsgn.ZIP 演示改变控件的大小和移动控件的例子(9KB)18,tvcheckboxes.ZIP treeview和checkbox的例子(9KB)19,tveventcancel.ZIP 使用treeview的简单例子(12KB) 20,tvnode-hitem.ZIP 在treeview的节点处使用图形(6KB)21,timedmsg.ZIP 对windows的标准对话框还可以加上时间限制的例子(9KB)22,browsedlg.ZIP 通过对一系列的 api 及 shell32.dll 的调用来实现 windows 各种标准浏览选择对话框。此源代码为 vb4 设计。对后来版本同样适用(8KB) 23,listtips.ZIP listbox中使每一item有不同的tip(2KB) 24,newctl.ZIP 动态创建控件的例子,解决了vb5中不能"无中生有"的毛病(2KB)25,colourdg.ZIP 调用windows的颜色对话框, 不需用到"comdlg32.ocx"(3KB) 26,clipbutton.ZIP 在我们使用 vb 的 code 编辑器时,其粘贴、复制、剪切按钮能随着当前的选择情况而进行适当的调整,本程序演示了类似的功能, 作者:jin(kenj@163.net)(3KB) 27,clipview.ZIP 使用 windows 剪贴板(16KB) 28,richedit.ZIP 利用richtext实现的编辑器(3KB) 29,srchlist.ZIP 在 list 控件里进行增量查询(4KB)30,savetree.ZIP 以文件方式保存和恢复treeview(7KB)31,kenjLV1.zip ListView的API效果演示(10KB)32,txtsrch.zip 在Text中实现快速增量查询(4KB)33,TracBar.zip 滚动条模块,与 VB 的滚动条比较,该模块支持动态生成, 支持触发消息(7KB)34,treedrag.zip TreeView 中节点拖动、增加、删除等功能演示(8KB)35,wordwrap.zip 在 TextBox 中自动换行(2KB)36,combosrc.zip 在 COMBO 中的增量查询(2KB)37,progman.zip 制作安装程序必备,此模块包含的SUB及Function能帮你做出专业的安装程序(2KB)38,messageboxdemo.zip 用API调出MessageBox框!(6KB)39,associate.zip 建立关联程序的例子。本程序演示把 .bar 文件与 NotePad建立关联(3KB)40,tbar97.zip 制作的一个类似Office97的工具栏,除了不能移动外,其他都极为相似!(24KB)41,combomagic.zip 在 COMBO 中的增量查询(3KB)42,cursortest.zip 鼠标控制演示。提供了一个鼠标控制的类,包括移动、限制隐藏等功能(4KB)43,cpu.zip 监视 CPU 使用情况的例子(4KB)44,cdfind.zip 找出系统光驱的盘符(3KB)45,up.zip 数字大写转换程序(4KB)46,ktext.zip VB编程中突破64K的文本显示限制(2KB)47,menudemo.zip 使用API改变菜单,使之具有几列,如同Windows的开始菜单一样(4KB)48,clipcur.zip 限制鼠标的移动区域(2KB)49,findlist.zip 在ListBox快速搜寻字符串(5KB)50,getword.zip 读取鼠标所在位置的单词(5KB)51,filemanager.zip 文件管理器(8KB)52,mousedemo.zip 一些鼠标例子演示(3KB)53,calendar.zip 一个小小的日历程序(4KB)54,hotkey.zip VB编程中热键应用一例(3KB)55,noalt+f4.zip 去掉窗体关闭按钮 (2KB)56,cpuinf.zip 取得CPU的报告(16KB)57,viewpw.zip 密码查看器,可查看"***"的字符(7KB)58,regdemo.zip 向注册表建立关联文件(3KB)59,cipher.zip 加密/解密字符串的例子(3KB)60,browsefolders5.zip 浏览一个子目录(3KB)61,easymail.zip 文件加密/解密的例子(5KB)62,encstrings.zip 加密/解密字符串的例子(2KB)63,keybinf.zip 键盘信息报告例子(2KB)64,reginq.zip 读取注册表的例子,利用了API可读注册表中所有的项目(4KB)65,wpchanger.zip Windows墙纸更改事例 (3KB)66,vbtozip.zip 用VB压缩文件(最简单的方法)(2KB)67,anicursor.zip 演示如何使用动画光标 VB源码(7KB)68,cfdemo.zip 不用CommonDialog控件,使用API调用字体对话框 VB源码(281KB)69,cmdlgd.zip 替换 Windows 公共对话框的 DLL 和演示程序的源代码,具有HOOK 功能(86KB)70,colordlg.zip 不用CommonDialog控件,使用API调用颜色对话框 VB源码(4KB)71,commondialogs.zip Windows 公共对话框的源代码,包含文件、打印机、颜色、字体、游览对话框(7KB)72,cpuinfo.zip 得到CPU的详细信息 VB源码(16KB)73,fileprops.zip 演示如何调用 Windows 资源管理器中的文件属性对话框(7KB)74,progbar121.zip 进程杆控件的源代码。具有水平、垂直,渐变,显示文本和百分比,播放声音的功能,不会让您失望。(12KB)75,subcls328.zip 一个子类的源代码,包含菜单、MDI窗体背景等8个演示程序(46KB)76,taskbar.zip 把应用程序的图标放在任务栏的右侧,是一个控件源代码(6KB)77,vbthread.zip 用VB实现多线程 VB源码(15KB)78,ini_vb6.zip 用WindowsAPI访问INI文件(8KB)79,syshotkey.zip 创建一个系统级的热键,无论你的程序是否获得焦点热键不生效 (4KB)80,win98mi.zip Win98多显示器支持演示(31KB)81,message.zip 拦截Windows消息(8KB)82,viewdoc.zip 用系统默认程序查看并打印文档 (7KB)83,srcset.zip 改变屏幕到16位彩色的演示 (2KB)84,moduleini.zip 访问、修改INI的函数(1KB)85,listapp.zip 枚举系统正在运行的程序(包括隐含的) (5KB)86,hidebtn.zip 隐藏Win9X中任务栏上的“开始”按钮(2KB)87,win95grp.zip 获得Windows9X下开始|程序中所有的程序组(16KB)88,clipview.zip 如何查看剪贴板中的带格式文本 (42KB)89,sysinfo.zip 获得系统的信息:硬盘、显示器、内存... (3KB)90,zm.zip 取得计算机中所有Modem的名称(2KB)91,custmnu2.zip 又一个菜单的例子(5KB)92,collSRC.zip 程序收集1.0版 (214KB)93,countdown.zip 一个倒计时的程序(10KB)94,00951404.zip 利用热键操作实现一键通(55KB)95,system_v.zip 系统监视器,可以实时监视正在运行的程序,并关闭他(29KB)
1. 增加播放音量控制功能。 2. 录音音量控制修正了一些错误,主要是对某些型号的板载声卡的支持。 3. 在文件列表分页控制上点击鼠标中键(也就是滚轮)可关闭文件。 4. 增加了大量的菜单图标,并在软件中应用了标准的ToolBar和PageScroller。 5. 左标尺增加右键菜单,方便浏览。 6. 未经安装过程的首次运行会自动弹出设置对话框要求用户确认。 7. 大显示双击显示单位的文字时也会进行单位切换。 8. 修正了直流偏移功能中的一些计算错误(减少重复运行此功能的需要)。 9. 效果菜单支持显示功能图标。 10. 定时录音可以定义多个时间段。 11. MP3插件的打开功能界面支持播放音量控制。 12. 新版本安装时会删除之前安装版本的启动菜单。 13. 增强录音界面易用性,提供了简化功能/全部功能显示切换,并重位置。 14. 增强录音界面易用性,调整了部分显示元素的位置。 15. 效果插件的对话框不再是独立的一个任务栏按钮。 16. 所有的进度统一为100。 17. 在工具菜单中增加显示工具的图标,并修正了配置工具菜单功能的一些错误。 18. 反安装功能现在不需要重新启动。 19. 修正了某些采样频率(22k 16bit mono/22k 8 bit stereo)下录音结果完全失败的情况。 20. 可在录音过程中打开/关闭音量显示。 21. 安装界面不再使用内嵌IE显示许可,提高了安装速度。 22. 解决播放按停止按钮后有时死锁的问题。 23. 改良安装界面,并增加了对WaveCN未正确安装或安装后移动了位置的情况处理。 24. 修正delphi 6 在windows xp下toolbutton缺少按下状态的小Bug。 25. 定时录音进入录音时若用户按录音的停止按钮则完全停止录音。 26. 录音开始后自动清除上一次录音的标记列表。 27. 录音后才根据录音情况决定是否创建新文件。 28. 复位音频设备功能已经过时,被删除。 29. 修正WMA插件播放功能出错或声音紊乱的现象。 30. 修正在开启了超线程或主频超过2.8GHz的计算机上运行出错的现象。 31. 针对Lame不支持8位的音频,在压缩设置对话框中给出警告。 32. 升级Ogg Vorbis 组件为1.1.0版。 33. 使用7-Zip制作软件发布包。7-Zip可到www.7-zip.org下载。 34. 修正mp3插件打开某些mp3文件时文件格式和长度辨认错误的情况。 35. 解决播放自动结束后有时会死锁的问题。 36. 修正录音时受后台运行软件影响的问题。 37. 修改mp3插件使适应新的LAME,现可压缩制作采样频率最低为8kHz等的多种mp3文件。

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧