基于对话框的工具栏问题

时间:2023-01-20 21:49:00
在基于对话框的工程上,创建了工具栏

         m_ToolBar.CreateEx(this,TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC);
m_ToolBar.LoadToolBar(IDR_TOOLBAR1);
m_ToolBar.ShowWindow(SW_SHOW);
RepositionBars(AFX_IDW_CONTROLBAR_FIRST, AFX_IDW_CONTROLBAR_LAST, 0);

工具栏中有3个按钮,如何禁用(灰色)和启用某个按钮?

网上说的方法:1、m_ToolBar.SetButtonInfo(0,10000,TBBS_BUTTON,0);
              2、UPDATE_COMMAND_UI 消息中 添加 pCmdUI->Enable(FALSE);
我都试过了,单文档/多文档工程是OK的,基于对话框是不行的。第2中方法都不会响应,可能要自己更新。 

13 个解决方案

#1


该回复于2011-04-21 15:21:55被版主删除

#2


在线等啊 没人回复吗?是不是太简单了?

#3


m_ToolBar.SendMessage(TB_ENABLEBUTTON,ID_T1,FALSE);

ID_T1是工具条一个按钮的ID

#4


是在不行,传工程上来,应该是可以的

#5


引用 2 楼 fjun_1118 的回复:
在线等啊 没人回复吗?是不是太简单了?

如何启用?

#6


引用 2 楼 fjun_1118 的回复:
在线等啊 没人回复吗?是不是太简单了?

看错了 ,我试了下 ,可以的 谢谢

#7


引用 5 楼 fjun_1118 的回复:
引用 2 楼 fjun_1118 的回复:
在线等啊 没人回复吗?是不是太简单了?

如何启用?


m_ToolBar.SendMessage(TB_ENABLEBUTTON,ID_T1, TRUE);

#8


还有其他方法吗?

#9


引用 7 楼 howtop2p 的回复:
引用 5 楼 fjun_1118 的回复:
引用 2 楼 fjun_1118 的回复:
在线等啊 没人回复吗?是不是太简单了?

如何启用?


m_ToolBar.SendMessage(TB_ENABLEBUTTON,ID_T1,TRUE);


嗯,刚才试过了。还有其他方法吗?就网上说的那些,我提到的那2个方法为什么不行?
这个方法原理是?

#10


其他的方法不知道,命令更新机制依赖于FrameWnd,对话框不可用

#11


引用 9 楼 fjun_1118 的回复:
引用 7 楼 howtop2p 的回复:
引用 5 楼 fjun_1118 的回复:
引用 2 楼 fjun_1118 的回复:
在线等啊 没人回复吗?是不是太简单了?

如何启用?


m_ToolBar.SendMessage(TB_ENABLEBUTTON,ID_T1,TRUE);


嗯,刚才试过了。还有其他方法吗?就网上说的那些,我提到的那2个方法为什么不行?
这……


第一个方法,你看MSDN

#12


我看过了。
void SetButtonInfo( int nIndex, UINT nID, UINT nStyle, int iImage );
nIndex:工具栏中按钮的索引
nID:按钮ID
nStyle:按钮样式
iImage :位图索引

其实就是通过ID来做文章的,基于对话框就不行。FrameWnd就没问题。

#13


明天结贴,欢迎大家讨论。

#1


该回复于2011-04-21 15:21:55被版主删除

#2


在线等啊 没人回复吗?是不是太简单了?

#3


m_ToolBar.SendMessage(TB_ENABLEBUTTON,ID_T1,FALSE);

ID_T1是工具条一个按钮的ID

#4


是在不行,传工程上来,应该是可以的

#5


引用 2 楼 fjun_1118 的回复:
在线等啊 没人回复吗?是不是太简单了?

如何启用?

#6


引用 2 楼 fjun_1118 的回复:
在线等啊 没人回复吗?是不是太简单了?

看错了 ,我试了下 ,可以的 谢谢

#7


引用 5 楼 fjun_1118 的回复:
引用 2 楼 fjun_1118 的回复:
在线等啊 没人回复吗?是不是太简单了?

如何启用?


m_ToolBar.SendMessage(TB_ENABLEBUTTON,ID_T1, TRUE);

#8


还有其他方法吗?

#9


引用 7 楼 howtop2p 的回复:
引用 5 楼 fjun_1118 的回复:
引用 2 楼 fjun_1118 的回复:
在线等啊 没人回复吗?是不是太简单了?

如何启用?


m_ToolBar.SendMessage(TB_ENABLEBUTTON,ID_T1,TRUE);


嗯,刚才试过了。还有其他方法吗?就网上说的那些,我提到的那2个方法为什么不行?
这个方法原理是?

#10


其他的方法不知道,命令更新机制依赖于FrameWnd,对话框不可用

#11


引用 9 楼 fjun_1118 的回复:
引用 7 楼 howtop2p 的回复:
引用 5 楼 fjun_1118 的回复:
引用 2 楼 fjun_1118 的回复:
在线等啊 没人回复吗?是不是太简单了?

如何启用?


m_ToolBar.SendMessage(TB_ENABLEBUTTON,ID_T1,TRUE);


嗯,刚才试过了。还有其他方法吗?就网上说的那些,我提到的那2个方法为什么不行?
这……


第一个方法,你看MSDN

#12


我看过了。
void SetButtonInfo( int nIndex, UINT nID, UINT nStyle, int iImage );
nIndex:工具栏中按钮的索引
nID:按钮ID
nStyle:按钮样式
iImage :位图索引

其实就是通过ID来做文章的,基于对话框就不行。FrameWnd就没问题。

#13


明天结贴,欢迎大家讨论。