首先定义两个全局变量:
CToolBar m_toolBar;
CImageList m_imageList;
在oninitial函数在加上如下代码:
//create toolbar
m_toolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD | WS_VISIBLE | CBRS_ALIGN_TOP);
//创建初始化CImageList对象
m_imageList.Create(32,32,ILC_COLOR24 |ILC_MASK,1,1);
m_imageList.Add(::LoadIcon(theApp.m_hInstance,MAKEINTRESOURCE(IDI_ICON1)));
m_imageList.Add(theApp.LoadIconW(IDI_ICON2));
m_imageList.Add(AfxGetApp()->LoadIconW(IDI_ICON3));
//设置ToolBar 为image
m_toolBar.GetToolBarCtrl().SetImageList(&m_imageList);//鼠标没有移图标上的显示效果
m_toolBar.GetToolBarCtrl().SetHotImageList(&m_imageList);//鼠标移图标上,显示效果
static UINT arryBar[4];
for(int i=0;i<4;i++)
{
if(i==1)
arryBar[i]=ID_SEPARATOR;
else
arryBar[i]=WM_BARMSG+i;
}
m_toolBar.SetButtons(arryBar,4);//为button加上ID;
m_toolBar.SetButtonText(0, _T("New"));
m_toolBar.SetButtonText(2, _T("Save"));
m_toolBar.SetButtonText(3, _T("Cut"));
m_toolBar.SetSizes(CSize(40,40),CSize(32,32));//重新设置button大小
m_toolBar.EnableToolTips(TRUE);
RepositionBars( 0, 0xffff, 0);//跟随主窗口调整大小
可以得到如下效果图:
添加图标响应函事件:
点击每个图标,都会向应用程序发送一个图标ID号的消息
所以添加消息响应,与一般的消息响应是一样的,也是要添加三处:
void CTest4Dlg::OnBtnBarID(UINT ID)
afx_msg void OnBtnBarID(UINT ID);
ON_COMMAND_RANGE(WM_BARMSG,WM_BARMSG+4,OnBtnBarID)
只不过,要注意一下,因为每个一个图标有一个ID,所以为所以图标添加响应,应该用:ON_COMMAND_RANGE