每次(即将)显示工具提示时,如何使工具提示文本自我更新?
我有一个CDialog
派生对话框,它CToolTipCtrl
以通常的方式使用工具提示,它工作得很好:
CToolTipCtrl
CDialog
我班级 的成员变量。- 创建工具提示并添加到工具中
CDialog::OnInitDialog
- 消息转发到
CToolTipCtrl
inCDialog::PreTranslateMessage
我也知道如何在代码的各个地方使用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();
}