【问题标题】:Force tooltip to come out using WINAPI and not mouse强制工具提示使用 WINAPI 而不是鼠标出现
【发布时间】:2014-05-08 14:13:50
【问题描述】:

我有问题,希望你能帮帮我。已经出于我的研究运气了...尝试了 stackoverflow、google 甚至 yahoo...

如何不使用鼠标强制显示工具提示?

我目前正在实现一些窗口自动化,需要强制显示工具提示。

像这样。通常,您必须将鼠标悬停在该条上 1 - 2 秒。

我想使用 WINAPI 或类似的工具强制显示这些工具提示。

类似于“SendMessage/Postmessage(hwnd, "WM_COMEOUTTOOLTIP", 0, lParam (with x and y Position)"。

WINAPI 中是否存在这样的内容?谷歌搜索疯狂但一无所获。

感谢大家的帮助!

乔纳森

【问题讨论】:

    标签: winapi tooltip mouseover sendmessage


    【解决方案1】:

    This SO Answer 提到可以使用TTM_POPUP message 调出工具提示,使用TTM_TRACKPOSITION 设置工具提示的位置。

    编辑:我对此有点好奇,并尝试制作一个工作示例:

    a) 在清单中包含常用控件或在源代码中使用以下行

    #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
    

    b) 创建和设置工具提示窗口

    hWndtoolTip = CreateWindowEx(WS_EX_TOPMOST, TOOLTIPS_CLASS, 0, WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP, CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, hWndParent, 0, hInstance, 0);
    SetWindowPos(hWndtoolTip, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
    
    TOOLINFO ti = {};
    ti.cbSize = sizeof(TOOLINFO);
    ti.uFlags = TTF_SUBCLASS;
    ti.hwnd   = hWndParent;
    ti.hinst  = hInstance;
    ti.uId    = (UINT)hWndtoolTip;
    ti.lpszText = L"tool-tip";
    GetClientRect(hWndParent, &ti.rect);
    SendMessage(hWndtoolTip, TTM_ADDTOOL, 0, (LPARAM)&ti);
    

    c) 在特定位置显示工具提示(例如,x=300,y=300):

    SetCursorPos(300, 300);
    SendMessage(hWndtoolTip, TTM_POPUP, 0, 0);
    

    【讨论】:

    • 首先感谢您的回复。在这里确实有所了解。我还使用您提供的代码尝试了一些事情。但是,工具提示不是(!)由我创建的。因此,我无法掌握工具提示的 hwnds(它们在运行时不可见),我需要运行您提供的代码:SendMessage(hwnd, TTM_POPUP,0,0), hwnd is unknown?? !!你对此有想法吗?谢谢!
    • hwnd 我是调用工具提示的窗口句柄,也许您可​​以使用 Spy 在应用程序“正常”运行并显示工具提示时查看窗口消息?
    • 太棒了!谢谢...我尝试了您的方法并对其进行了一些修改。现在它完美地工作了!该程序将工具提示作为自己的窗口启动...因此能够从中获取 hwnd。
    【解决方案2】:

    也许this 就是您要找的东西?

    而且由于工具提示是使用 CreateWindowEx 函数创建的,你不能只使用 ShowWindow 吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-21
      • 1970-01-01
      相关资源
      最近更新 更多