首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何启用/禁用CMFCRibbonButton对象?

如何启用/禁用CMFCRibbonButton对象?
EN

Stack Overflow用户
提问于 2020-04-25 14:28:39
回答 1查看 119关注 0票数 0

如何启用/禁用CMFCRibbonButton对象?

我看到它有一个成员IsDisabled(),但是没有像setEnable(BOOL en)这样的函数。

我在Word的ribbonBar中看到,一些按钮是禁用的,所以我想一定有一种方法可以启用/禁用CMFCRibbonButton

代码示例:

代码语言:javascript
复制
CMFCRibbonBar ribbon;
pcat_home = ribbon.myAddCategory("&Home", IDR_RIBBONBAR_SMALL, IDR_RIBBONBAR);
CMFCRibbonPanel *ppanel = pcat_home->AddPanel("", 0, NULL);
CMFCRibbonButton *pb = new CMFCRibbonButton(PRINT_COMSETUP_MSG, "func1", hicon1, FALSE, NULL, FALSE, FALSE);
ppanel->Add(pb);
//...
// pb->setEnable(false);  // this not work , but I want to disable the button**
EN

回答 1

Stack Overflow用户

发布于 2020-04-26 14:32:00

我找到了一个解决方案!从CMFCRibbonButton派生我的类,并实现了一个函数setDisable,该函数设置了保护变量 m_bIsDisabled 还需要在动态创建对象时重写copyFrom以复制m_bIsDisabled。

代码语言:javascript
复制
class myRibbonButton : public  CMFCRibbonButton
{
   DECLARE_DYNCREATE(myRibbonButton)

   public:
    myRibbonButton(){}
    myRibbonButton(UINT nID, LPCTSTR lpszText, HICON hIcon, BOOL bAlwaysShowDescription = FALSE, HICON hIconSmall = NULL, BOOL bAutoDestroyIcon = FALSE, BOOL bAlphaBlendIcon = FALSE):
        CMFCRibbonButton( nID, lpszText,  hIcon,  bAlwaysShowDescription ,  hIconSmall ,  bAutoDestroyIcon ,  bAlphaBlendIcon ){}
    void setDisable(BOOL b) {  m_bIsDisabled =  b; }
    virtual void CopyFrom(const CMFCRibbonBaseElement& src) override
{
     CMFCRibbonButton::CopyFrom(src);
     m_bIsDisabled =src.IsDisabled();
}

};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61421823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档