【发布时间】:2013-01-29 15:16:19
【问题描述】:
如何让工具提示文本在每次(即将)显示工具提示时自行更新?
我有一个 CDialog 派生对话框,它以通常的方式使用 CToolTipCtrl 工具提示,它工作得很好:
-
我的
CDialog类中的CToolTipCtrl成员变量。 - 创建工具提示并添加到
CDialog::OnInitDialog中的工具 - 消息转发到
CDialog::PreTranslateMessage中的CToolTipCtrl
我也知道如何使用 CToolTipCtrl::UpdateTipText 和 CToolTipCtrl::Update
但是,我想要但尚未完成的是: 我希望在显示相应的工具提示之前每次鼠标悬停在工具上时更新工具提示的文本,即显示的文本取决于显示工具提示文本时的情况。
到目前为止我的工作代码(截断到相关行):
class CmyDialog : public CDialog
{
virtual BOOL OnInitDialog();
virtual BOOL PreTranslateMessage(MSG* pMsg);
virtual void RefreshToolTipText(); // Want to call this prior each display
CToolTipCtrl m_toolTip;
}
BOOL CmyDialog::OnInitDialog()
{
CDialog::OnInitDialog();
m_toolTip.Create(this);
m_toolTip.AddTool( GetDlgItem(IDC_SOMECONTROLID), "Sometext" );
m_toolTip.Activate( TRUE );
}
BOOL CmyDialog::PreTranslateMessage(MSG* pMsg)
{
if(IsWindow(m_toolTip.m_hWnd))
m_toolTip.RelayEvent(pMsg);
}
void CmyDialog::RefreshToolTipText()
{
m_toolTip.UpdateTipText( "updated runtime text", GetDlgItem(IDC_SOMECONTROLID) );
m_toolTip.Update();
}
【问题讨论】:
-
我想我已经找到了解决方案,但作为一个新用户,我无法在接下来的 6 小时内发布答案 :c)。明天会这样做...
标签: mfc dialog runtime tooltip