したがって、これを純粋にマネージ コードで行う方法はないと思います。あなたはネイティブに行かなければならないでしょう。
私の見方では、2つのオプションがあります。
P/ SendMessage関数を呼び出します。hwnd
をターゲット ウィンドウに設定し、TTM_ADDTOOL
メッセージと lParam のTOOLINFO構造体を渡します。これは、作成していない外部ウィンドウ (アプリにないウィンドウ) にツールヒントが必要な場合に便利です。FindWindowを呼び出すことで、その hwnd を取得できます。
この記事で、これらすべてがどのように行われるかをご覧ください。 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
速度を上げるには、.NET コードで次のようなものを定義します。ここから定義を取得しました。
私の回答で言及したすべての構造は、同じ Web サイト (または他の同様のウェブサイト) にあります。コードでそれらをすべて定義したら、私の回答にある 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);
}