做一个编辑器,里面用到了CDialogBar作ToolBar,但是很奇怪的是,放在里面的按钮居然是灰色不可用的。如下图所示:
寻思半天都不得其解,后来搜索了下相关问题,结果这个的确是一个问题。具体是怎么样的,我也没有去深究,总之想找到一个简单的解决办法。
原来只需要重载CDialogBar::OnUpdateCmdUI这个方法就可以了,代码如下:
void CToolBarDlg::OnUpdateCmdUI(CFrameWnd* pTarget, BOOL bDisableIfNoHandler)
{
bDisableIfNoHandler = FALSE;
CDialogBar::OnUpdateCmdUI(pTarget, FALSE);
}
![](https://i-blog.csdnimg.cn/blog_migrate/de410dbfaef62f777b280a6ef52224bc.jpeg)
寻思半天都不得其解,后来搜索了下相关问题,结果这个的确是一个问题。具体是怎么样的,我也没有去深究,总之想找到一个简单的解决办法。
原来只需要重载CDialogBar::OnUpdateCmdUI这个方法就可以了,代码如下:
![None.gif](https://i-blog.csdnimg.cn/blog_migrate/cbef093dcc044b2793832001e2365e43.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/2f88ce130b654eb5dc6788e02dbcfc90.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
![InBlock.gif](https://i-blog.csdnimg.cn/blog_migrate/df37983f39daa189b8c814e01a6a9011.gif)
![ExpandedBlockEnd.gif](https://i-blog.csdnimg.cn/blog_migrate/0ac3a2d53663ec01c7f7225264eeefae.gif)
如上图所示,已经不是灰色的了,添加了一个事件处理程序,放了一个MessageBox进去,可以响应了。
我的编译环境是:VS2005+SP1。