2016-07-20 10 views
0

Als Hinzufügen einer Menüband-Taste, gebe ich auch den Namen dafür. Es führt die gewünschte Aktion aus, aber die Platzierung der Saite ist absurd. Es sollte nicht über dem Bild, sondern darunter sein. Irgendwelche Vorschläge bitte. Code-Snippet und Screenshot hinzufügenWie wird Text auf der Multifunktionsleiste zugewiesen?

RibbonButtonProp* mRibbonProperties; 
bool m_bsetlargeimage = FALSE; 
if (ButtonProp.Lookup(m_nMenuItemID, mRibbonProperties) != 0) 
{ 
    if (ButtonProp[m_nMenuItemID]->m_bIfSmallButton == FALSE) 
    { 
     m_PanelImage.SetImageSize(CSize(32, 32)); 
     m_PanelImage.Load(ButtonProp[m_nMenuItemID]->m_nImageResourceId); 
     m_bsetlargeimage = TRUE; 
    } 
    else 
    { 
     m_PanelImage.SetImageSize(CSize(16, 16)); 
     m_PanelImage.Load(ButtonProp[m_nMenuItemID]->m_nImageResourceId); 
     m_bsetlargeimage = FALSE; 
    } 

    pRibbonButton = new CMFCRibbonButton(m_nMenuItemID, m_strMenuItemName, m_PanelImage.ExtractIcon(ButtonProp[m_nMenuItemID]->m_nImageIndex)); 
    pRibbonButton->SetAlwaysLargeImage(m_bsetlargeimage); 

Print should be just under the image

+0

Ich schaute in afxribbonbutton.cpp, und fand diese Bildgröße für const CSize sizeImageLarge = m_pParent-> GetImageSize (TRUE); wird nur 16, 15 Pixel zurückgegeben, wobei es 40,40 sein sollte. Irgendwelche Ideen, warum es nicht die richtigen Längen liest? –

Antwort

0

Es gibt keine Möglichkeit, dies zu ändern. So werden Bänder gezeigt und gezeichnet.

Ein Schaltflächentext im "großen Modus" wird immer unter dem Symbol angezeigt. Ich sehe nichts im Code, um dieses Verhalten zu ändern, UND ich würde das nie ändern, weil es das Standardverhalten ist, das die Leute in einem Standard-Ribbon sehen wollen und erwarten.

+0

Wie kann ich sicherstellen, dass "Large-Mode" aktiviert ist? Ich nehme an, dass der Aufruf SetAlwaysLargeImage (True) das löst? Bitte korrigieren Sie, wenn ich falsch liege. –

+1

Ja! SetAlwaysLargeImage (True) erledigt den Job. – xMRi

0

Früher
AddCategory (m_strMenuName, NULL, NULL, NULL, NULL, i, NULL);

Jetzt
AddCategory (m_strMenuName, NULL, NULL, CSize (16,16), CSize (32, 32), i, NULL);

Erläuterung: Es wurde der Text so platziert, dass angenommen wird, dass die Bildgröße nur klein ist, da sie nicht bereits beim Aufruf von create definiert wurde.

Verwandte Themen