MFC:隐藏工具栏按钮
Posted
技术标签:
【中文标题】MFC:隐藏工具栏按钮【英文标题】:MFC: hiding a toolbar button 【发布时间】:2010-09-15 04:00:24 【问题描述】:我目前通过处理ON_UPDATE_COMMAND_UI
和调用->Enable( TRUE / FALSE )
来禁用某些按钮。
完全隐藏按钮的最佳方法是什么?
我尝试过使用HideButton
,这会使按钮图像不可见,但它仍会占用空间,因此可见按钮之间存在空白区域。
谢谢。
【问题讨论】:
如果你不希望按钮在那里,我不会称之为隐藏,而是你似乎想删除按钮并在一段时间后动态添加它。 【参考方案1】:如果您想隐藏工具栏特定按钮,请使用此代码。
m_wndToolBar.GetToolBarCtrl().HideButton(ID_TOOLBAR1,TRUE);
这里的 m_wndToolBar 是一个 ToolBar 对象。 ID_TOOLBAR1 是您要隐藏该按钮控件的哪个按钮。
【讨论】:
我只需要手动编辑rc文件来隐藏分隔符。除此之外,这种方法效果很好。【参考方案2】:尝试在 HideButton() 之后调用toolbar.SendMessage(TB_AUTOSIZE);
;
我建议在 OnUpdateCommandUI 以外的其他地方显示/隐藏这些按钮,因为这些按钮发生得太频繁并且可能导致闪烁。虽然不是 MFC,但我有一个类似的代码可以工作:
void HideToolbarButton(HWND toolbar, UINT command_id)
TBBUTTONINFO tbinfo;
tbinfo.cbSize = sizeof(tbinfo);
tbinfo.dwMask = TBIF_STATE;
tbinfo.state = TBSTATE_HIDDEN;
SendMessage(toolbar, TB_SETBUTTONINFO, command_id, (LPARAM)&tbinfo );
【讨论】:
toolbar.SendMessage(TB_AUTOSIZE) 隐藏按钮后不会缩小工具栏:(以上是关于MFC:隐藏工具栏按钮的主要内容,如果未能解决你的问题,请参考以下文章