【问题标题】:MFC Add Tooltip for disabled radio buttonMFC 为禁用的单选按钮添加工具提示
【发布时间】:2017-12-20 18:01:28
【问题描述】:

在 MFC(我知道旧)中,我试图添加一个仅在禁用单选按钮时出现的工具提示。

我可以使用以下代码显示工具提示:

m_ToolTip.Create(this);
m_ToolTip.AddTool(GetDlgItem(IDC_RADIOBUTTON), "Tooltip text");
m_ToolTip.Activate(TRUE);

但是当我的单选按钮被禁用时它不起作用,(显然这是设计使然)

经过一些研究,我似乎需要覆盖

PreTranslateMessage()

显示ToolTip的功能,可能会跟踪鼠标何时进入控制区域,但我不知道该怎么做。

非常感谢任何帮助。

【问题讨论】:

  • 由于窗口被禁用,您将无法使用工具提示。但是,您可以使用 GetWindowRect(),转换为对话框上的客户区矩形,然后为窗口占用的空间添加工具。查看采用 RECT 参数的 CToolTipCtrl::AddTool 的覆盖。

标签: c++ mfc tooltip


【解决方案1】:
BOOL MyDialog::PreTranslateMessage(MSG* pMsg)
{
    // GF: Fix tooltips on disabled items.
    m_wndCtrl.RelayEvent(pMsg->message, pMsg->wParam, pMsg->lParam);
    m_wndCtrl.UpdateWindow();
    return CDialog::PreTranslateMessage(pMsg);
}

这对我有用。

【讨论】:

  • 如果您解释一下,核心问题是什么,以及这个答案如何解决它,这将非常有帮助。此外,我找不到使用您正在使用的签名公开公共 RelayEvent 成员的单个 MFC 类。但是,也不清楚m_wndCtrl 是什么。
  • 天哪。 m_wndCtrl 是从 CButton 或 CEdit... 派生的控件,它具有 CToolTipCtrl m_toolTip 成员和此实现: void ThisClass::RelayEvent(UINT message, WPARAM wParam, LPARAM lParam) { if (m_tooltip.m_hWnd != NULL) {味精味精; msg.hwnd=m_hWnd; msg.message=消息; msg.wParam= wParam; msg.lParam=lParam;味精时间= 0; msg.pt.x=低字(lParam); msg.pt.y=HIWORD (lParam); m_tooltip.RelayEvent(&msg); } }
猜你喜欢
  • 2016-11-07
  • 1970-01-01
  • 2023-04-03
  • 2012-08-07
  • 2023-01-22
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 2021-03-20
相关资源
最近更新 更多