2013-03-11 47 views
2

我希望我的CMFCButton在鼠标悬停时显示工具提示。 如果我使用SetToolTip()方法在OnInitDialogCMFCButton :: SetToolTip(str)不能在OnInitDialog()和

CMFCButton* bt = ((CMFCButton*)GetDlgItem(IDC_MFCBUTTON1)); 
bt->SetTooltip(_T("tooltip")); 

它不工作,但它的工作,如果我把消息处理函数的代码像另一个按钮的点击手柄。 我想要的是当对话框创建时,CMFCButton可以显示工具提示,我应该在哪里放这些代码?

======================== 顺便说一句,我在Property视图中设置的工具提示文本在大多数时间都不起作用。

+0

相关:http://stackoverflow.com/questions/8053302/what-does-cmfcbuttonenablefulltexttooltip-do – sergiol 2015-10-07 18:03:32

回答

0

你有没有调用基类'OnInitDialog()?重点是在调用SetToolTip()之前需要创建控件。使用调试器进入OnInitDialog(),并在您调用SetToolTip()时查看该控件的m_hWnd是否有值。

+0

是的,我所谓的基地类“OnInitDialog()”和mfcButton的成员m_pToolTip有效。代码bt-> GetTooltipCtrl()。GetText(str,bt)可以获得我在属性卡中设置的正确的工具提示文本,但只有在创建对话框后调用setToolTip(str)才能显示。 – Keosu 2013-03-12 07:49:23

1

我只是派生的类

class CMyButton : public CMFCButton 
{ 
public: 
    void SetDelayFullTextTooltipSet(bool DelayFullTextTooltipSet) 
    { 
     m_bDelayFullTextTooltipSet = DelayFullTextTooltipSet; 
    } 
}; 

而是对Dialog类的我用的是按钮CMFCButton变量,我现在有一个CMyButton

而在OnInitDialog,在SetTooltip电话后,我做

button.SetDelayFullTextTooltipSet(FALSE); 
+0

我们不能在这里看到完整的课程吗? – 2017-02-23 17:49:01

+1

这是正确的答案。应该标记为这样。 – 2017-02-23 18:11:43

+1

@AndrewTruckle:这是完整的课堂;没有比这里显示的更多的东西。 – sergiol 2017-02-23 19:42:54