标题：CToolBar
CToolBar
类CToolBar的对象是带有一行位图按钮和可选分隔线的控件条。这些按钮可以像普通按钮、  继承图表核选按钮或单选按钮那样动作。CToolBar对象通常是由CFrameWnd或CMDIFrameWnd派生的框架窗口对象的嵌入成员。
CToolBar::GetToolBarCtrl是MFC4.0后新增加的成员函数，它允许你利用Windows通用控件对工具条的定制及其它性能的支持。CToolBar的成员函数为你提供了Windows通用控件的大多数性能；当您调用 GetToolBarCtrl，它将返回对 CToolBarCtrl 对象。 使用Windows公共控件，请参见 CToolBarCtrl 有关设计工具栏的更多信息。 有关公共控件的信息，请参见 Windows SDK的 公共控件。创建工具条Visual C++提供了两种创建一个工具条的方法。要使用资源编辑器（ResourceEditor）创建一个工具条，应遵循下面的步骤： 
1、创建一个工具条资源。
2、构造CToolBar对象。
3、调用Create或CreateEx函数来创建Windows工具条并将它与该CToolBar对象连接。
4、调用LoadToolBar来装入工具条资源。创建工具条资源(5张)
另外，也可以依据下面的步骤： 
1、构造CToolBar对象。
2、调用Create或CreateEx函数来创建Windows工具条并将它与CToolbar对象连接。
3、调用LoadBitmap来装入包含工具条按钮图像的位图。
4、调用SetButtons来设置按钮风格并使每一个按钮与位图中的一幅图像关联。
此工具条中的所有按钮图像都位于同一个位图，该位图必须为每一个按钮包含一个图像。所有的图像都必须是同样大小的。缺省的尺寸是16个像素宽和15个像素高。这些图像必须一幅接一幅的放在位图中。
SetButton函数以指向一个控制ID数组的指针和一个指定数组中元素数目的整数作为参数。该函数将每个按钮的ID值设置为对应的数组元素的值，并赋予每个按钮一个图像索引值，每个索引值指定对应按钮图像在位图中的位置。如果某一数组元素的值为ID_SEPARATOR，则不为其赋图像索引值。
按钮图像在位图中的次序通常就是图像在屏幕上的绘制次序，但你也可以使用SetButtonInfo函数来修改图像次序和绘制次序的关系。
在工具栏中的任何按钮大小相同。 默认值为24 x 22像素，且 Windows软件设计接口的准则匹配。 在图像和按钮维数之间的任何其他的空间用于在图像周围窗体边框。
每个按钮具有一幅图像。按钮的各种状态和风格（被压住，弹起，按下，无效，无效按下，以及不定）都可以由这幅图像产生。虽然位图可以是任何颜色，但是使用灰色加黑色文字及阴影可实现最好的效果。
CToolBar 支持具有最多的位图16种颜色。 在加载图像到工具栏编辑器中，如有必要，Visual Studio会自动将图像转换为16色位图，并显示警告消息已转换，则图像。 如果使用具有16个以上的颜色的图像(使用编辑的外部编辑图像)，应用程序可能意外行为。
缺省情况下，工具条按钮模拟普通按钮。但是，工具条按钮也可以模拟复选框按钮和单选按钮。复选框按钮具有三种状态：核选，清除和不定。单选按钮值具有两种状态：核选和清除。
要设置单个按钮或不指向一个数组的分隔线风格，可以调用GetButtonStyle来获取这个风格，然后调用SetButtonStyle（而不是调用SetButton）。当你要在运行时改变按钮的风格时，SetButtonStyle是最有用的。
要分配显示在一个按钮上的文本，可以调用GetButtonText来获取要显示在该按钮上的文本，然后调用SetButtonText来设置这些文本。复选框按钮要创建一个复选框按钮，给它赋予TBBS_CHECKBOX风格或在一个ON_UPDATE_ COMMAND_UI处理程序中使用某个CCmdUI对象的SetCheck成员函数。调用SetCheck将一个普通按钮变成一个复选框按钮。传递给SetCheck函数的参数为0，则按钮是未核选的，传递1则按钮被核选，传递2则按钮为不定状态。
要创建一个单选按钮，在一个ON_UPDATE_COMMAND_UI处理程序中调用某个CCmdUI对象的SetRadio成员函数。给SetRadio传递参数0，则按钮为未核选的，传递非零值，则按钮是被核选的。为了提供一个单选按钮组的互不相容性，则组中的每个按钮都必须具有ON_UPDAT_COMMAND_UI处理程序。
有关使用CToolBar的更多信息，参见“Visual C++程序员指南”中的文章“工具条”和“Visual C++联机文件”中的技术注释31，控制条。
#include <afxext.h>[1]
请参阅：
CToolBarCtrl, CControlBar, CToolBar::Create, CToolBar::LoadBitmap, CToolBar::SetButtons, CCmdUI::SetCheck, CCmdUI::SetRadio
成员函数
构造CToolBar 创建一个CToolBar对象。
Create 创建Window工具条并将它与该CToolBar连接。
CreateEx 为入的CToolBarCtrl对象创建一个具有附加风格的CToolBar对象。
SetSizes 设置按钮及其位图的尺寸。
SetHeight 设置工具条的高度。
LoadToolBar 装入一个用资源编辑器创建的工具条资源。
LoadBitmap 装入包含位图—按钮图像。
SetBitmap 设置一个位图中的图像。
SetButtons 设置按钮风格和按钮位图在位图中的索引。属性CommandToIndex 返回具有给定的命令ID的按钮的索引。
GetItemID 返回具有给定索引值的按钮或分割线的命令ID。
GetItemRect 获取具有给定索引值的项的显示矩形。
GetButtonStyle 获取一个按钮的风格。
SetButtonStyle 设置一个按钮的风格。
GetButtonInfo 获取一个按钮的ID，风格和图像ID。
SetButtonInfo 设置一个按钮的ID、风格和图像号。
GetButtonText 获取要显示在一个按钮的文本。
SetButtonText 设置要显示在一个按钮上的文本。
GetToolBarCtrl 允许直接访问基本的通用控件。
函数详解
MFC为工具栏的操作提供了CToolBar类。下面介绍CToolBar类的主要成员函数。
virtual BOOL CreateEx(
CWnd* pParentWnd,
DWORD dwCtrlStyle = TBSTYLE_FLAT,
DWORD dwStyle = WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP,
CRect rcBorders = CRect(0, 0, 0, 0),
UINT nID = AFX_IDW_TOOLBAR
);
创建工具栏对象。参数pParentWnd为工具栏父窗口的指针。参数dwCtrlStyle为工具栏按钮的风格，默认为TBSTYLE_FLAT，即“平面的”。参数dwStyle为工具栏的风格，默认取值WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP，由于是主框架窗口的子窗口，所以要有WS_CHILD和WS_VISIBLE风格，CBRS_ALIGN_TOP风格表示工具栏位于父窗口的顶部， 各种风格可以参见MSDN的Toolbar Control and Button Styles中的定义。参数rcBorders为工具栏边框各个方向的宽度，默认为CRect(0, 0, 0, 0)，即没有边框。参数nID为工具栏子窗口的ID，默认为AFX_IDW_TOOLBAR。
BOOL LoadBitmap(UINT nIDResource);
为工具栏加载位图。参数nIDResource为位图资源的ID。成功则返回TRUE，否则返回FALSE。注意，这里的位图资源应当为每个工具栏按钮都提供位图，如果图片不是标准大小（16像素宽，15像素高），则需要调用SetSizes成员函数调整按钮大小和图片大小。
BOOL LoadToolBar(UINT nIDResource);
加载由nIDResource指定的工具栏。参数nIDResource为要加载的工具栏的资源ID。成功则返回TRUE，否则返回FALSE。
void SetSizes(SIZE sizeButton,SIZE sizeImage);
设置工具栏按钮的大小和图片的大小。参数sizeButton为工具栏按钮的像素大小。参数sizeImage为图片的像素大小。
void SetButtonStyle(int nIndex,UINT nStyle);
设置工具栏按钮或分隔线的风格，或者为按钮分组。参数nIndex为将要进行设置的按钮或分隔线的索引。参数nStyle为按钮风格，可以是以下取值：
TBBS_BUTTON 标准按钮(默认)
TBBS_SEPARATOR 分隔条 
TBBS_CHECKBOX 复选框 
TBBS_GROUP 标记一组按钮的开始
TBBS_CHECKGROUP 标记一组复选框的开始
TBBS_DROPDOWN 创建下拉列表按钮
TBBS_AUTOSIZE 按钮的宽度根据按钮文本计算，而不基于图片大小 
TBBS_NOPREFIX 按钮的文本没有快捷键前缀
UINT GetButtonStyle(int nIndex) const;
获取工具栏按钮或分隔条的风格。风格可参考SetButtonStyle。参数nIndex为按钮或分隔条的索引。
BOOL SetButtonText(int nIndex,LPCTSTR lpszText);
设置工具栏按钮的文本。参数nIndex为工具栏按钮的索引。参数lpszText为指向要设置的文本字符串的指针。设置成功则返回TRUE，否则返回FALSE。
CString GetButtonText(int nIndex) const;
获取工具栏按钮上显示的文本。参数nIndex为工具栏按钮的索引。[2-3]