如何启用/禁用CMFCRibbonButton对象?
我看到它有一个成员IsDisabled(),但是没有像setEnable(BOOL en)这样的函数。
我在Word的ribbonBar中看到,一些按钮是禁用的,所以我想一定有一种方法可以启用/禁用CMFCRibbonButton。
代码示例:
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**发布于 2020-04-26 14:32:00
我找到了一个解决方案!从CMFCRibbonButton派生我的类,并实现了一个函数setDisable,该函数设置了保护变量 m_bIsDisabled 还需要在动态创建对象时重写copyFrom以复制m_bIsDisabled。
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();
}
};https://stackoverflow.com/questions/61421823
复制相似问题