2008-10-31 98 views
1

我在我的主機中有一個CMFCRibbonStatusBar,我添加了一個CMFCRibbonButtonsGroup,它又有一個CMFCRibbonButton。該按鈕與菜單條目具有相同的ID。如何在狀態欄中顯示CMFCRibbonButton的工具提示?

CMFCRibbonButtonsGroup* pBGroup = new CMFCRibbonButtonsGroup(); 

CMFCToolBarImages images; 
images.SetImageSize(CSize(32, 16)); // Non-square bitmaps 
if(images.Load(IDB_STATUSBAR_IMAGES)) 
{ 
    pBGroup->SetImages(&images, NULL, NULL); 
} 

m_pStatusButton = new CMFCRibbonButton(ID_STATUS_SHOWSTATUS, 
             _T(""), 
             IMAGEINDEX_DEFAULTSTATUS); 

pBGroup->AddButton(m_pStatusButton); 

m_wndStatusBar.AddExtendedElement(pBGroup, _T("")); 

我想用這個按鈕狀態指示器:

創建按鈕按如下規則進行。

我想在以下兩種情況下,以顯示工具提示:

  • 當狀態改變和
  • 當用戶在按鈕上移動鼠標。

我不知道如何從頭開始。我查看了ToolTipDemoDlgToolTips示例項目,但無法弄清楚如何執行此操作,因爲他們所做的只是顯示工具欄項目或對話框按鈕的工具提示(CWnd - 而不是CMFCRibbonButton)。

如果你熟悉ToolTipDemo示例項目:既然似乎有做事情的幾種方法,我寧願提示看起來像「擴展基於Visual經理 - 」刀尖爲shown in this screenshot

謝謝!

回答

2

我不認爲有可能顯示工具提示沒有鼠標光標超過控制。這一切都是自動完成的。

不過,如果你想擁有一個漂亮的提示就像在你的截圖,你需要調用SetToolTipTextSetDescription,像這樣:

CMFCRibbonButton* pBtn = new CMFCRibbonButton(12345, _T(""), 1); 
pBtn->SetToolTipText("This is the bold Title"); 
pBtn->SetDescription("This is the not-so-bold Description"); 
pGroup->AddButton(pBtn); 
0

我使用的是CMFCRibbonButtonGroup,這是添加到內CMFCRibbonButton控制CMFCRibbonStatusBar。請注意0​​構造函數中的第4個參數bAlwaysShowDescription,因爲這似乎會影響行爲,具體取決於是否調用了SetDescription()

具體而言,如果SetDescription()尚未被調用,那麼bAlwaysShowDescription是TRUE還是FALSE - 顯示工具提示(正如我所預期的)並不重要。如果設置了SetDescription()bAlwaysShowDescription爲FALSE,則將鼠標懸停在按鈕上時會顯示工具提示,並在其下方有說明。

什麼似乎違反直覺給出這個bAlwaysShowDescription參數的名稱,就是當這是TRUE和SetDescription()設置,既不刀尖也沒有說明出現。我不知道這是否與此相關的帖子: https://connect.microsoft.com/VisualStudio/feedback/details/399646/cmfcribbonbutton-wont-show-tooltip-if-balwaysshowdescription-1

希望這有助於你可以實現你需要bAlwaysShowDescription參數的不同組合什麼,是否SetDescription()設置。