首先定义两个全局变量: 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