如何让工具栏按钮动态变灰/变亮?

njtlxm 2004-06-07 08:54:31
首先说明:我的工具栏是自己继承了CToolBar类,在代码里动态创建的。
而且我想在程序启动时显示该工具栏,但是将工具栏上的按钮全部变灰(无效),只有在特定情况下才变亮(有效),记住,是全部。不是有些人想的按下按钮后再变灰。
谢谢!给第一个回答正确的200
...全文
821 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
njtlxm 2004-06-08
  • 打赏
  • 举报
回复
呵呵,jiangsheng(蒋晟.MSMVP2004Jan)说对了,我最后的处理也是这样。散分。
zhangnanonnet 2004-06-07
  • 打赏
  • 举报
回复
没有资源?那你的那些BUTTON上的图片怎么生成。。其实资源不是重要的。。关键是TOOLBAR的句柄
njtlxm 2004-06-07
  • 打赏
  • 举报
回复
我的toolbar没有资源,不是load出来的
njtlxm 2004-06-07
  • 打赏
  • 举报
回复
呵呵,自己搞定了。
zhangnanonnet 2004-06-07
  • 打赏
  • 举报
回复
EnableButton应该是有效的,你是不是没有正确的得到CTOOLBAR的句柄啊
我是这样作的,可以
在.H文件中定义
CToolBar m_wndToolBar;
然后创建TOOLBAR
// Create the Toolbar and attach the resource
if(!theApp.m_wndToolBar.Create(this) || !theApp.m_wndToolBar.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to Create Dialog Toolbar\n");
return FALSE;
}

theApp.m_wndToolBar.SetBarStyle(theApp.m_wndToolBar.GetBarStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY);

// Make it flat.
theApp.m_wndToolBar.ModifyStyle(0, theApp.m_wndToolBar.GetStyle()|TBSTYLE_FLAT);

用一个函数来控制BUTTON的有效性
void CInstallBuilderApp::EnableToolbarButton(BOOL b)
{
if (b)
{
CToolBarCtrl *btn=(CToolBarCtrl*)&m_wndToolBar.GetToolBarCtrl();
btn->EnableButton(ID_RUN,true);
}
else
{
CToolBarCtrl *btn=(CToolBarCtrl*)&m_wndToolBar.GetToolBarCtrl();
btn->EnableButton(ID_RUN,false);
}
}

ID_RUN就是要控制的BUTTON ID, IDR_TOOLBAR1是TOOLBAR资源
njtlxm 2004-06-07
  • 打赏
  • 举报
回复
另外说一下,调用CToolBarCtrl的EnableButton(ID,FALSE)无效
蒋晟 2004-06-07
  • 打赏
  • 举报
回复
CMainFrame在应用程序空闲的时候会根据命令处理是否存在来更新界面,包括菜单、工具栏和状态栏。正确的设置界面的方法是在命令流程中增加工具栏命令的更新处理代码。

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧