簡體   English   中英

在C#中附加到鼠標的工具提示

[英]Tooltip attached to mouse in C#

如何使用C#獲取附加到鼠標光標的工具提示? 我正在嘗試實現如下效果,一個顯示Ctrl / Shift / Alt鍵狀態的小工具提示。

我目前正在使用Tooltip但它拒絕顯示,除非它有大約2行文本。

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

在鼠標移動中:

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

提示

所以我認為你無法用托管代碼完全做到這一點。 你必須要原生。

我看到它的方式有兩種選擇。

  1. P /調用SendMessage函數。 hwnd設置為目標窗口,並為lParam傳遞TTM_ADDTOOL消息和TOOLINFO結構。 當您想要在未創建的外部窗口(不在您的應用程序中)的工具提示時,這非常有用。 你可以通過調用FindWindow獲得它的hwnd。

    本文中了解如何完成所有這些操作 你只需要添加P / Invoke。

  2. 顯然,你可以使用TOOLTIPS_CLASSCreateWindowEx()函數作為類名,它將為你生成一個工具提示。 像這樣的東西:

     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代碼中定義類似的內容。 我從這里得到了定義。

您將在我的答案中找到我在同一網站(或其他類似網站)中提到的所有結構。一旦您在代碼中定義了所有這些結構,您就可以輕松轉置/移植我答案中的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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM