一、工具栏的美化
(一)工具栏显示文字
文档/视图默认的工具栏上只有图标而没有文字。可以将文字在图标下方显示,也可以将文字在图标右侧显示。
1 在图标下方显示文字
在CMainFrame::OnCreate()函数中,在工具栏创建之后,也就是m_wndToolBar.CreateEx()函数成功调用之后,首先调整工具栏上按键的大小,之后指定工具栏按键显示的文字。
(1)调整工具栏按键的大小
m_wndToolBar.GetToolBarCtrl().SetBitmapSize(CSize(16,16));
m_wndToolBar.GetToolBarCtrl().SetButtonSize(CSize(32,32));
其中,CToolBar::GetToolBarCtrl()函数获取了CToolBar对应的CToolBarCtrl类的引用,通过该引用能够直接访问通用控件。之后通过获取到的CToolBarCtrl的引用,调用其成员函数SetBitmapSize()和SetButtonSize()来调整工具栏按键位图的大小以及工具栏按键的大小。为了能在图标下面显示文字,需要将按键的大小设置的比图标大。
相关链接:CToolBar和CToolBarCtrl区别:
CToolBarCtrl的父类是CWnd;而CToolBar的父类是CControlBar,CControlBar的父类是CWnd。可以看出,CToolBarCtrl队API的包装很少,基本上是比较原生的;而CToolBar继承于CControlBar,多了一层包装,这样使CToolBar在使用上变得更加容易,而且CToolBar专门是位在文档视图程序设计的。如果程序是基于对话框的,而没有框架,则直接采用控件更为方便,此时可使用CToolBarCtrl。
(2)设置按键文字
通过CToolBar::SetButtonText()函数设置按键文字,该函数的格式为:
BOOL SetButtonText(
int nIndex,
LPCTSTR lpszText
);
其中,nIndex表示要设置文字的按键的索引;lpszText表示要设置的文字。如
m_wndToolBar.SetButtonText(0,_T("你好"));
m_wndToolBar.SetButtonText(1,_T("世界"));
注意:如果只设置一个按键的文字,不会有效果。
2 在图标右侧显示文字
(1)设置工具栏的附加属性
在CToolBar::CreateEx()函数中加入TBSTYLE_LIST属性。该属性表示工具栏按键具有列表风格。
注意:TBSTYLE_LIST加在CToolBar::CreateEx()的第二个参数上,而不是第三个参数上。第二个参数表示工具栏的附加属性,第三个参数表示工具栏属性。
相关链接:CToolBar::CreateEx()第二个参数的默认值是TBSTYLE_FLAG,表示工具栏按键具有扁平属性。
(2)设置按键文字
设置按键文字的方法与“在图标下方显示文字”的方法相同。
注意:只设置一个按键的文字,会有效果。