我在dialogbar上添加了一个button控件,然后把dialogbar dock到主窗口上,但是,
button是灰色的.我用button->enablewindow(true)也只能改变暂时为可用(一瞬间,确切的说).
怎么才能使button总是可用?
谢谢了.

解决方案 »

  1.   

    给该button写一个消息处理函数就可以了,一般在CMainFrm里写
      

  2.   

    这估计是DialogBar的问题,就象ToolBar一样,可能你需要为这个Button设置事件响应。
      

  3.   

    相应该按钮的UPDATE_COMMAND_UI,然后pCmdUI->Enable();
      

  4.   

    我试着为他响应事件,可是没有用.
    还有,添加一个static 控件,他的caption是汉字的话,好象是乱码.
      

  5.   

    button灰化的时候,好象不会响应什么消息,比如单击,双击.
      

  6.   

    还有,添加一个static 控件,他的caption是汉字的话,好象是乱码.----------------------------------
    你对话框的字体有没有选中文?
      

  7.   

    问题解决了吗?
    我以前也曾经遇到过这样的问题
    你是project|add to project|componets and controls |cdialogbar这样生成对话条的吗?
    如果你还没有解决
    我有一种稍微麻烦的方法
      

  8.   

    你要为这个button添加事件,确定一个功能,否则更菜单一样,默认显示灰色。
    你static控件这样赋值试试看:
    m_static.SetWindowText(_T(中文));
      

  9.   

    问题解决了吗?
    我以前也曾经遇到过这样的问题
    你是project|add to project|componets and controls |cdialogbar这样生成对话条的吗?
    如果你还没有解决
    我有一种稍微麻烦的方法不是这样的,我是插入一个对话框IDD_DIALOGBAR,不过你可以先说说稍微麻烦的方法.
      

  10.   

    tonybaobao(Tony宝宝) :
    恩,但是在classwizard中button好象没有cmdupdata,只有菜单有把.
      

  11.   

    我指的是pCmdUI->Enable();
      

  12.   

    没有为该按钮添加处理函数,用class wizard为该按钮添加事件处理你对话框的字体有没有选中文?
      

  13.   

    如果你是添加一个对话框资源的话,
    1,生成新类,从CDialog派生的
    2,把这个类的头文件和实现文件中所有的CDialog改为CDialogBar,并且把构造函数重后面的那块初始化列表删掉,否则编译通不过的
    3,自己添加initdialog函数
    4,在mainframe中oncreate添加:
    if(!m_DialogBar**.Create(this, IDD_DIALOG_**, CBRS_TOP|CBRS_FLYBY|CBRS_TOOLTIPS, -1)  || (!m_DialogBar**.initdialog())
    {
      TRACE0("FIALE");
      return -1;
    }
    m_dialogbar.enabledocking(CBRS_ORIENT_HORZ);
    Dockcontrolbar(&m_dialogbar**)
    5,添加虚拟函数OnCmdMsg(...)
    {
      if(m_DialogBar**.oncmdmsg(。。))
        return true;
      return cmainframe::oncmdmsg(..);
    }
    6,最后显示对话条的菜单响应函数里面
    {
      showcontrolbar(&m_dialogbar**, (m_dialgobar**.getstyle(&ws_visible)) == 0, FALSE);
    }这样应该差不多了
      

  14.   

    谢谢各位的解答和帮助,问题已经解决了,是这样的。为button添加 ON_UPDATE_COMMAND_UI(IDC_BUTTON1,OnUpdateButton1)处理就可以了。具体细节我好象是程序利用空闲时间象dlgbar发送Update消息(记不清了),如果控件没有处理,就用缺省方式处理,即控件是无效的(button就是此类控件),所以只要给控件一个处理或更新函数就可以回避调用缺省方式了。具体细节可以看看 mfc100问(具体书名忘了)。
    我说的不对的地方欢迎给我发消息(csdn帐号:enoloo);欢迎交流