无法更改工具提示坐标 MFC
Posted
技术标签:
【中文标题】无法更改工具提示坐标 MFC【英文标题】:Can't change tooltip coordinates MFC 【发布时间】:2015-05-22 16:59:14 【问题描述】:我需要使工具提示稍微向右并降低到鼠标光标,但我无法以任何方式做到这一点,尝试了不同的坐标,但似乎没有任何效果。哪里有问题?谢谢。
// Add the new tooltip (if available)
if (m_LastToolTipRow!=-1 && m_LastToolTipRow!=-1)
// Not using CToolTipCtrl::AddTool() because it redirects the messages to CListCtrl parent
TOOLINFO ti = 0;
ti.cbSize = sizeof(TOOLINFO);
ti.uFlags = TTF_IDISHWND | TTF_TRANSPARENT; // Indicate that uId is handle to a control
ti.uId = (UINT_PTR)m_hWnd; // Handle to the control
ti.hwnd = m_hWnd; // Handle to window to receive the tooltip-messages
ti.hinst = AfxGetInstanceHandle();
ti.lpszText = LPSTR_TEXTCALLBACK;
m_OwnToolTipCtrl.SendMessage(TTM_ADDTOOL, 0, (LPARAM) (LPTOOLINFO) &ti);
m_OwnToolTipCtrl.SendMessage(TTM_TRACKPOSITION, 0, (LPARAM)MAKELPARAM(pt.x + 100, pt.y + 100));
m_OwnToolTipCtrl.SendMessage(TTM_TRACKACTIVATE, true, (LPARAM)&ti);
m_OwnToolTipCtrl.Activate(TRUE);
//Multiline
m_OwnToolTipCtrl.SetMaxTipWidth(256);
//m_OwnToolTipCtrl.SetMaxTipWidth(SHRT_MAX);
【问题讨论】:
【参考方案1】:TTF_IDISHWND 指示 uId 成员是工具的窗口句柄。如果未设置此标志,则 uId 是工具的标识符。
据此,具有 m_hWnd 句柄的窗口是显示工具提示的窗口,您可以定位窗口本身。如果您的意思是与该窗口分开的工具提示,那么那里就有一个主要问题。
【讨论】:
我需要相对于鼠标光标显示它。无论如何,添加 TTF_ABSOLUTE 也行不通。 在意识到您提供的窗口句柄意味着工具提示已合并到该窗口后,我更改了答案。 我不太了解工具提示窗口和工具提示本身之间的区别。此外,我什至无法想象如何解决该问题,因为我是 mfc 的新手。 当您提供 TTF_IDISHWND 时,窗口本身充当您的工具提示。您是说窗口是工具提示吗? 我不知道有什么区别。我虽然工具提示应该相对于鼠标光标显示,因为我提供了坐标。所以我必须将 m_OwnToolTipCtrl HWND 传递给 uId 才能正常工作?我尝试使用 GetSafeHwnd() 获取处理程序,但它仍然不起作用。以上是关于无法更改工具提示坐标 MFC的主要内容,如果未能解决你的问题,请参考以下文章