首先说明:我的工具栏是自己继承了CToolBar类,在代码里动态创建的。
而且我想在程序启动时显示该工具栏,但是将工具栏上的按钮全部变灰(无效),只有在特定情况下才变亮(有效),记住,是全部。不是有些人想的按下按钮后再变灰。
谢谢!给第一个回答正确的200

解决方案 »

  1.   

    另外说一下,调用CToolBarCtrl的EnableButton(ID,FALSE)无效
      

  2.   

    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资源
      

  3.   

    我的toolbar没有资源,不是load出来的
      

  4.   

    没有资源?那你的那些BUTTON上的图片怎么生成。。其实资源不是重要的。。关键是TOOLBAR的句柄
      

  5.   

    CMainFrame在应用程序空闲的时候会根据命令处理是否存在来更新界面,包括菜单、工具栏和状态栏。正确的设置界面的方法是在命令流程中增加工具栏命令的更新处理代码。
      

  6.   

    呵呵,jiangsheng(蒋晟.MSMVP2004Jan)说对了,我最后的处理也是这样。散分。