无法更改工具提示坐标 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的主要内容,如果未能解决你的问题,请参考以下文章

MFC - 更改 CDialogEx 控件中使用的 CMFCToolTipCtrl 中的字体

以编程方式更改项目设置

如何更改 mfc 应用程序的背景属性

如何更改谷歌地图绘图管理器工具栏工具提示?

引导工具提示应在更改选择框上启用

MFC SDI 应用程序,如何更改菜单项的标题?