2016-07-20 11 views
0

リボンボタンを追加すると、その名前も入力しています。それは望ましい動作をしていますが、文字列の配置は不合理です。画像の上にあるべきではなく、その下にあるべきです。どんな提案もお願いします。コードスニペットとスクリーンショットを追加する。リボンボタンのテキストの配置方法は?

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

私はafxribbonbutton.cppを調べて、そのイメージサイズがCSize sizeImageLarge = m_pParent-> GetImageSize(TRUE)であることを確認しました。 16,15ピクセルだけ返されます。ここでは40,40になります。なぜそれが正しい長さを読んでいないすべてのアイデア? –

答えて

0

これを変更する方法はありません。これがリボンの表示と描画の方法です。

「大型モード」のボタンテキストは、常にアイコンの下に描画されます。この動作を変更するコードは何も表示されていません。標準のリボンで見たいデフォルトの動作であるため、決してこれを変更しません。

+0

「大型モード」が有効になっていることを確認するにはどうすればよいですか?私はSetAlwaysLargeImage(True)コールがこれを解決すると仮定していますか?私が間違っていれば修正してください。 –

+1

はい! SetAlwaysLargeImage(True)はジョブを行います。 – xMRi

0

先ほど
AddCategory(m_strMenuName、NULL、NULL、NULL、NULL、NULL、i、NULL);


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

説明:イメージを作成するときに定義されていないため、イメージのサイズがすべて小さいと仮定してテキストを配置していました。

関連する問題