我用到了CMFCRibbonBaseElement中的控件,我想在程序中把某个控件禁用,就是变成灰色的,不响应用户的输入,但是我发现这之中的控件都没有Enable方法,请问各位高人怎么才能禁用呢?
另外MSDN中提到有个OnEnable方法是给framework调用的,究竟怎么调用呢?

解决方案 »

  1.   

    CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;
    pMain->m_wndRibbonBar.GetDlgItem(ID_edit1)->EnableWindow(FALSE);
      

  2.   

    楼上的解答只能适合一部分控件吧  因为CMFCRibbonButton之类的控件不是从CWnd继承过来的 ,所有好像不能通用的,不过对Edit还是可以的
      

  3.   

    http://stackoverflow.com/questions/502640/disable-enable-ribbon-buttons-for-mfc-feature-pack/505352
    这有答案
      

  4.   

    定义ON_UPDATE_COMMAND_UI,在消息响应函数中添加
    pCmdUI->Enable(xxx);其中xxx是bool变量的条件成员函数
      

  5.   

    ON_UPDATE_COMMAND_UI
    方法只适用于鼠标键盘触发frame刷新,
    如果是任务触发(比如说,某件事情处理完,需要enable/disable几个控件),就不适用了。
    redraw updatewindow等方法都不行。