gpt4 book ai didi

c# - 在 C# 中附加到鼠标的工具提示

转载 作者:可可西里 更新时间:2023-11-01 14:15:05 26 4
gpt4 key购买 nike

如何使用 C# 获得附加到鼠标光标的工具提示?我正在尝试实现如下效果,一个小工具提示显示 Ctrl/Shift/Alt 键的状态。

我目前正在使用 Tooltip 但它拒绝显示,除非它有大约 2 行文本。

tt = new ToolTip();
tt.AutomaticDelay = 0;
tt.ShowAlways = true;
tt.SetToolTip(this, " ");

在鼠标移动中:

tt.ToolTipTitle = ".....";

tooltip

最佳答案

所以我认为没有任何方法可以纯粹使用托管代码来做到这一点。你必须去本土化。

我认为有两种选择。

  1. P/调用 SendMessage功能。将 hwnd 设置为目标窗口并传入 TTM_ADDTOOL 消息和 TOOLINFO lParam 的结构。当您想要在您尚未创建的外部窗口(不在您的应用程序中的窗口)上显示工具提示时,这很有用。你可以通过调用 FindWindow 得到它的hwnd .

    this article. 中了解这一切是如何完成的您只需添加 P/Invoke。

  2. 显然,您可以使用 CreateWindowEx() 函数并将 TOOLTIPS_CLASS 作为类名,它会为您生成工具提示。像这样:

    HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
    WS_POPUP | TTS_NOPREFIX | TTS_ALWAYSTIP,
    CW_USEDEFAULT, CW_USEDEFAULT,
    CW_USEDEFAULT, CW_USEDEFAULT,
    hwndParent, NULL, hinstMyDll,
    NULL);

    SetWindowPos(hwndTip, HWND_TOPMOST,0, 0, 0, 0,
    SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);

    在此处查看整篇文章:http://msdn.microsoft.com/en-us/library/windows/desktop/bb760250(v=vs.85).aspx


为了加快速度,您需要在 .NET 代码中定义类似这样的内容。我从 here 得到了定义.

您会在同一网站(或其他类似网站)上找到我在回答中提到的所有结构。一旦您在代码中定义了所有这些结构,您就可以轻松地转置/移植位于我的回答和链接的文章。:

class NativeFunctions 
{
[DllImport("user32.dll", SetLastError=true)]
static extern IntPtr CreateWindowEx(
WindowStylesEx dwExStyle,
string lpClassName,
string lpWindowName,
WindowStyles dwStyle,
int x,
int y,
int nWidth,
int nHeight,
IntPtr hWndParent,
IntPtr hMenu,
IntPtr hInstance,
IntPtr lpParam);
}

关于c# - 在 C# 中附加到鼠标的工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11098468/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com