none
MFC自动生成Ribbon界面,想给右上角style按钮旁边动态添加一个按钮怎么添加 RRS feed

  • 问题

  • 如题,MFC自动生成Ribbon界面,想给右上角style按钮旁边动态添加一个按钮并且改变其字体颜色,应该怎么做
    2017年10月11日 6:23

答案

  • Hi Hota_CT,

    很抱歉回复的晚了。

    经过测试,这个按钮无法修改,但是panel下的复制粘贴等按钮均可修改。这可能是个MFC ribbon的问题。

    建议你connect 到微软,将这个问题提上去。或者在VS上选择Help->Send Feedback->Report a Problem。

    谢谢你的理解与支持。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Hota_CT 2017年10月24日 2:55
    2017年10月23日 8:52

全部回复

  • Hi Hota_CT,

    感谢在MSDN论坛发帖。

    >>如题,MFC自动生成Ribbon界面,想给右上角style按钮旁边动态添加一个按钮并且改变其字体颜色,应该怎么做

    对于这个问题,你可以尝试使用CMFCRibbonBar::AddToTabs将按钮添加到Ribbon bar的的标签行右侧。

    或者你可以在Ribbon编辑器里添加按钮到style按钮旁边。

    关于颜色的问题,在我看来是不容易实现,并没有相应的API可以完成这个操作。

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年10月11日 7:37
  • 感谢你的回复

    CMFCRibbonBar::AddToTabs动态添加按钮也没问题

    可是为什么我添加的按钮永远在最右边?

    我的目的是给style的左边添加一个按钮

    请问有什么办法可以解决吗?

    谢谢

    2017年10月12日 11:15
  • 你好,我现在需要动态替换关于那个按钮的图标要怎么替换呢?

    我现在的方法是

    CMFCRibbonButton *pButton = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_APP_ABOUT));

    pButton->SetImageIndex(2, FALSE);

    图标确定都存在,

    并且此方法可以修改主功能区的按钮图标(如你发的图上的cut、paste按钮),

    但是修改style这个条上的就有问题

    还有就是那个添加按钮可以添加到最左边吗?

    2017年10月17日 5:54
  • Hi Hota_CT,

    >>但是修改style这个条上的就有问题

    如果你是用CMFCRibbonBar::AddToTabs函数的话,添加的应该是一个CMFCRibbonBaseElement 类型的对象。你可以尝试手动创建一个CMFCRibbonButton 对象,通过CMFCRibbonBar::AddToTabs函数将其添加到任务栏中,然后在通过该对象修改button的图片。

    >>还有就是那个添加按钮可以添加到最左边吗?

    CMFCRibbonBar::AddToTabs函数的文档描述来看,添加的ribbon元素位于任何系统按钮之前。

    如果可以的话,请提供一个可以测试的工程,方便我们查找具体原因。

    Best Regards,
    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年10月18日 8:12
  • 动态替换“关于”按钮的图标

    CMFCRibbonButton *pButton = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_APP_ABOUT));

    这句话应该是有问题的,或者说ID_APP_ABOUT这个按钮应该不是CMFCRibbonButton 

    因为ID_APP_ABOUT这个按钮没有m_nLargeImageIndex和m_nSmallImageIndex的区分

    具体怎么解决我还是不知道

    2017年10月18日 8:39
  • 我想在点击的时候修改此图标

    代码如下

    CMFCRibbonButton *pButton = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_APP_ABOUT));
    if (NULL != pButton)
    {
    DWORD nStatus = m_wndRibbonBar.GetHideFlags();

    if (nStatus == AFX_RIBBONBAR_HIDE_ELEMENTS)
    {
    pButton->SetImageIndex(2, FALSE);
    }
    else
    {
    pButton->SetImageIndex(3, FALSE);
    }
    pButton->Redraw();
    }

    此方法修改不成功,

    但是此方法修改CMFCRibbonPanel上的按钮是没问图的

    据我分析问题应该在是因为首次调用

    CMFCRibbonButton *pButton = DYNAMIC_DOWNCAST(CMFCRibbonButton, m_wndRibbonBar.FindByID(ID_APP_ABOUT));

    的时候

    CMFCRibbonButton 中的m_nLargeImageIndex和m_nSmallImageIndex都是-1;

    而实际中m_nSmallImageIndex应该不是-1,

    请问有什么好的处理办法吗?

    • 已合并 Baron Bi 2017年10月19日 7:15 重复发帖
    2017年10月18日 11:26
  • Hi Hota_CT,

    请不要在MSDN论坛中提重复的帖子。

    谢谢你的理解与支持。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年10月19日 7:13
  • 好的

    不过这其实是换了个问题,只不过这两个问题很接近

    这次主要问的是怎么动态替换此处图标

    请问有什么好的办法吗?

    谢谢

    2017年10月19日 11:10
  • 你好,这问题有没有办法解决呢?
    2017年10月23日 8:14
  • Hi Hota_CT,

    很抱歉回复的晚了。

    经过测试,这个按钮无法修改,但是panel下的复制粘贴等按钮均可修改。这可能是个MFC ribbon的问题。

    建议你connect 到微软,将这个问题提上去。或者在VS上选择Help->Send Feedback->Report a Problem。

    谢谢你的理解与支持。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Hota_CT 2017年10月24日 2:55
    2017年10月23日 8:52
  • 谢谢你的答复,另外问下这问题提交了之后微软会给回复还是?我上次提交的QAT的问题,也不知道怎么样了
    2017年10月24日 5:24