【问题标题】:Can't change tooltip coordinates MFC无法更改工具提示坐标 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);
        }

【问题讨论】:

    标签: user-interface visual-c++ mfc


    【解决方案1】:

    TTF_IDISHWND 指示 uId 成员是工具的窗口句柄。如果未设置此标志,则 uId 是工具的标识符。

    据此,具有 m_hWnd 句柄的窗口是显示工具提示的窗口,您可以定位窗口本身。如果您的意思是与该窗口分开的工具提示,那么那里就有一个主要问题。

    【讨论】:

    • 我需要相对于鼠标光标显示它。无论如何,添加 TTF_ABSOLUTE 也行不通。
    • 在意识到您提供的窗口句柄意味着工具提示已合并到该窗口后,我更改了答案。
    • 我不太了解工具提示窗口和工具提示本身之间的区别。此外,我什至无法想象如何解决该问题,因为我是 mfc 的新手。
    • 当您提供 TTF_IDISHWND 时,窗口本身充当您的工具提示。您是说窗口是工具提示吗?
    • 我不知道有什么区别。我虽然工具提示应该相对于鼠标光标显示,因为我提供了坐标。所以我必须将 m_OwnToolTipCtrl HWND 传递给 uId 才能正常工作?我尝试使用 GetSafeHwnd() 获取处理程序,但它仍然不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 2017-12-11
    • 1970-01-01
    相关资源
    最近更新 更多