gpt4 book ai didi

mfc - 如何在每次显示之前更新工具提示文本?

转载 作者:行者123 更新时间:2023-12-02 03:34:25 25 4
gpt4 key购买 nike

如何在每次(即将)显示工具提示时使工具提示文本自动更新?

我有一个CDialog派生对话框,它以通常的方式使用CToolTipCtrl工具提示,并且工作得很好:

  • CToolTipCtrl 我的 CDialog 类中的成员变量。
  • 创建了工具提示并添加到CDialog::OnInitDialog中的工具
  • 消息转发到 CDialog::PreTranslateMessage 中的 CToolTipCtrl

我还知道如何使用 CToolTipCtrl::UpdateTipTextCToolTipCtrl::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();
}

最佳答案

调用CToolTipCtrl::AddTool时,使用“特殊”值LPSTR_TEXTCALLBACK作为工具提示使用的文本。这将导致工具提示向您要为其添加工具提示的窗口的父窗口发布 TTN_NEEDTEXT 通知。然后家长可以相应地设置文本。

关于mfc - 如何在每次显示之前更新工具提示文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14586137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com