如何使用 C# 获取附加到鼠标光标的工具提示?我试图实现如下所示的效果,一个小工具提示显示 Ctrl / Shift / Alt 键的状态。
我目前正在使用Tooltip
但除非有大约 2 行文本,否则它拒绝显示。
tt = new ToolTip();
tt.AutomaticDelay = 0;
tt.ShowAlways = true;
tt.SetToolTip(this, " ");
在鼠标移动中:
tt.ToolTipTitle = ".....";
所以我认为没有任何方法可以纯粹使用托管代码来做到这一点。你必须成为本地人。
我认为有两种选择。
-
P/调用发信息 http://msdn.microsoft.com/en-us/library/windows/desktop/ms644950%28v=vs.85%29.aspx功能。设置hwnd
到你的目标窗口并传入TTM_ADDTOOL
消息和一个TOOLINFO http://msdn.microsoft.com/en-us/library/windows/desktop/bb760256%28v=vs.85%29.aspxlParam 的结构。当您想要在尚未创建的外部窗口(不在您的应用程序中)上显示工具提示时,这非常有用。你可以通过调用获取它的hwnd查找窗口 http://msdn.microsoft.com/en-us/library/windows/desktop/ms633499%28v=vs.85%29.aspx.
看看这一切是如何完成的本文。 http://www.codeproject.com/Articles/2417/Display-ToolTip-in-any-place-on-the-screen您只需添加 P/Invoke。
-
显然你可以使用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 http://msdn.microsoft.com/en-us/library/windows/desktop/bb760250(v=vs.85).aspx
为了让您加快速度,您需要在 .NET 代码中定义类似的内容。我得到了定义here http://www.pinvoke.net/default.aspx/user32/createwindowex.html?diff=y.
您将在同一网站(或其他类似网站)上找到我在答案中提到的所有结构。一旦您在代码中定义了所有结构,您就可以轻松转置/移植我答案中的 C 示例,并且链接的文章:
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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)