一般大家做Toolbar是怎么做的啊?我看了网上很多做法,都是那种TBBUTTON数组的,然后再根据此数组,一个一个按钮地往Toolbar中添加,连separate也要这样添加,我觉得这样好麻烦啊!!!关于按钮的图标好多是通过CImageList来做的。我是想简单点,直接在ResourceView中添加个工具条,然后在工具条上添加自己要的按钮,并画上相应的图标,设置好每个按钮的ID,不知这种做法可以否?不过我还有个问题,就是,我的工具条上有15个按钮,但其中2个按钮上的图标要变(如其中有个Play按钮,显示的图标是个三角,按过后就要求变成Stop按钮,这时图标变为一个黑方块,就像很多播放器那样),像这种情况,图标和提示文本的变化该如何实现啊? 不用CImageList能实现吗?(我试了一下,用CImageList的话,好象工具条上所有的图标都要先在CImageList中放好才行,好象又不能像我前面说的那样简单点实现了:(还有,如何使工具条上指定ID的按钮失效啊??
我简单见了个多文档的工程,在缺省的工具条上最后又加了两个按钮:ID_TB_B1, ID_TB_B2,
好象一定要给相应按钮添加了处理方法后,按钮才有效?!
我给添加的两个按钮的处理方法如下:
void CMainFrame::OnTbB1() 
{
    // TODO: Add your command handler code here
//    m_wndToolBar.GetToolBarCtrl().EnableButton(ID_TB_B2,FALSE);
    m_wndToolBar.GetToolBarCtrl().SetState(ID_TB_B2, FALSE);
    AfxMessageBox("B1");
}void CMainFrame::OnTbB2() 
{
    // TODO: Add your command handler code here
    AfxMessageBox("B2");
}我是想通过按了ID_TB_B1的按钮后使ID_TB_B2按钮失效,可是用EnableButton(ID_TB_B2,FALSE)发现不行啊??!!OnTbB2()还是能响应啊!!还有工具条按钮的State属性,有TBSTATE_ENABLED值,但好象没有一个相应的Disable值啊?!!如何通过SetState(ID_TB_B2, FALSE)使了一下,好象还是不能使ID_TB_B2按钮失效啊!是工具条上指定的按钮失效,各位是如何做的啊?

解决方案 »

  1.   

    我是想简单点,直接在ResourceView中添加个工具条,然后在工具条上添加自己要的按钮,并画上相应的图标,设置好每个按钮的ID,不知这种做法可以否?
    ==这样是可以的
    使按钮无效,可以响应UPDATE_COMMAND_UI消息
      

  2.   

    Mark下,这个问题我也有同样的困惑,回来看看
      

  3.   

    我是想简单点,直接在ResourceView中添加个工具条,然后在工具条上添加自己要的按钮,并画上相应的图标,设置好每个按钮的ID,不知这种做法可以否?
    ==没有问题啊,一般都是这么做的
    工具条其实就是菜单的快捷方式。当然,你可以自定义一个ID号,而不是真正添加一个菜单项。不过这个ID号和菜单是一回事,你完全可以给这个ID号添加COMMAND和UPDATE_COMMAND_UI事件
      

  4.   

    那直接画上图标这种做法,怎样做到运行过程中换图标啊??用UPDATE_COMMAND_UI的话,又要通过什么全局变量之类的来在各个按钮间控制了吧?EnableButton 和 SetState方法为什么不起作用,是MFC的BUG???(我看到网上很多人反映这个问题)
      

  5.   

    看看这个也许对你有一些启发
    http://www.vckbase.com/document/viewdoc/?id=625