作者:天通金1980 | 来源:互联网 | 2023-05-17 20:37
我的工具条CToolBarm_wndToolBar位于一个CReBarm_wndReBar上面,工具条添加位图资源如下:CImageListimg;img.Create(16,16,
我的工具条CToolBar m_wndToolBar位于一个CReBar m_wndReBar上面,工具条添加位图资源如下:
CImageList img;
img.Create(16, 16, ILC_COLOR8|ILC_MASK,4,4);//设置"热"位图
img.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON3));
m_wndToolBar.GetToolBarCtrl().SetHotImageList(&img);
img.Detach();
img.Create(16, 16, ILC_COLOR8|ILC_MASK, 4,4);//设置"冷"位图
img.Add(AfxGetApp()->LoadIcon(IDI_ICON2));
img.Add(AfxGetApp()->LoadIcon(IDI_ICON4));
m_wndToolBar.GetToolBarCtrl().SetImageList(&img);
img.Detach();
//四个按钮
UINT IDArray[] = {IDC_A, IDC_B, IDC_C, IDC_D};
m_wndToolBar.SetButtons(IDArray, sizeof(IDArray)/sizeof(UINT));
我现在希望是当用户在按钮IDC_A上点击鼠标的时候,按钮按下状态,并且位图显示为IDI_ICON1,当用户再次点击该按钮时,按钮恢复弹起状态,并且位图为IDI_ICON2,请教该怎
么实现?
11 个解决方案
自绘吧,绘制时检测按钮的CHECKED状态,分别显示ICON1和ICON2
BS_PUSHLIKE
按一下沉下去的界面,再按一下,弹上来的界面。
工具栏按钮有三种状态图片,分别用三个ImageList,可以通过CToolBarCtrl类的SetDisabledImageList、SetHotImageList、SetImageList来设置。
使用OnUpdate_Command_UI消息处理程序可以实现控件界面的更新
使用GetCheck可以查看控件的按下状态
4楼正解,具体可以参考下面地址:
http://blog.csdn.net/primer_programer/archive/2008/08/01/2755158.aspx
我是楼主,不好意思这三天没上网。谢谢大家热心答复,现在还是不可以
1.我的四个按钮是这样放到工具条上去的:
UINT IDArray[] = {IDC_A, IDC_B, IDC_C, IDC_D};
m_wndToolBar.SetButtons(IDArray, sizeof(IDArray)/sizeof(UINT));
大家说设置BS_PUSHLIKE属性,这个设置是对工具条而言还是对按钮而言呢?我实验了一下不行。
2.SetDisabledImageList是设置不可用时候图片,而我当前需要的是按钮按下去是一种图片,按钮弹起来后是另外一种图片呢。我写了一个Demo,用了大家的方法都不成功。