向工具条按钮添加图片

来源:互联网 发布:手机画画软件 编辑:程序博客网 时间:2024/04/30 15:58

if (!m_wndToolBar.CreateEx(this,TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP

              |CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||

              !m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))

       {

              TRACE0("Failedto create toolbar/n");

              return-1;      // fail to create

       }

 

 

       CImageListimg;

 

//前两个参数代表所要保存的位图大小,第3个代表位图像素颜色深度此处为16位的位图, //4个参数为所要插入的位图的数量,第五个参数为当所添加位图超过预先给定的数量时,//CImgList自动添加空间的数量,此操作在位图数量很大时会很慢

       img.Create(18,18, ILC_COLOR4, 4, 2);

       img.Add(AfxGetApp()->LoadIcon(IDI_ICON1));  //插入位图

       img.Add(AfxGetApp()->LoadIcon(IDI_ICON2));

       img.Add(AfxGetApp()->LoadIcon(IDI_ICON3));

       img.Add(AfxGetApp()->LoadIcon(IDI_ICON4));

 

       m_wndToolBar.GetToolBarCtrl().SetImageList(&img);//设置工具栏的CImgList对象

 

       img.Detach();   //释放资源句柄,因为此处为局部变量,释放后句柄由主窗口接收,并不因为变量超出作用域而销毁,也可以将CImagList设置为成员变量解决这个问题。

 

//参数1:工具栏上按钮的下标,分割符也要占用一个下标

//参数2:按钮的资源标识符

//参数3:风格表示,此处标明这是一个按钮

//参数4:按钮上对应位图的标识,这个之前插入CImageList时的先后顺序有关

       m_wndToolBar.SetButtonInfo(2,ID_TOOLBTN1, TBBS_BUTTON, 0);

       m_wndToolBar.SetButtonInfo(4,ID_TOOLBTN2, TBBS_BUTTON, 1);

       m_wndToolBar.SetButtonInfo(6,ID_TOOLBTN3, TBBS_BUTTON, 2);

       m_wndToolBar.SetButtonInfo(8,ID_TOOLBTN4, TBBS_BUTTON, 3);

 

如果按钮处于禁用状态可以在Update_Command_UI的消息响应中将它启用具体代码如下:

void CMainFrame::OnUpdateToolbtn1(CCmdUI*pCmdUI)

{

       //TODO: Add your command update UI handler code here

       pCmdUI->Enable();

}