namespace
DvsCC
{
using System;
using System.Drawing;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;
/**//// <summary>
/// Summary description for NativeMethods.
/// </summary>
public class NativeMethods
{
private const long WS_POPUP = 0x80000000;
private const long TTS_BALLOON = 0x40;
private const long TTS_NOFADE = 0x20;
private const int GWL_STYLE = -16;
private const int WM_USER = 0x0400;
private const int TTM_SETTIPBKCOLOR = WM_USER + 19;
private NativeMethods() {}
public static void SetBalloonStyle ( ToolTip toolTip )
{
NativeWindow window = GetNativeWindow ( toolTip );
NativeMethods.SetWindowLong ( window.Handle, GWL_STYLE , WS_POPUP | TTS_BALLOON | TTS_NOFADE );
}
public static void SetBackColor ( ToolTip toolTip, Color color )
{
int backColor = ColorTranslator.ToWin32( color );
NativeWindow window = GetNativeWindow ( toolTip );
//setting back color
SendMessage( window.Handle, TTM_SETTIPBKCOLOR, backColor, 0 );
}
private static NativeWindow GetNativeWindow ( ToolTip toolTip )
{
FieldInfo windowField = toolTip.GetType().GetField("window", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance );
NativeWindow window = (NativeWindow)windowField.GetValue ( toolTip );
if ( window.Handle == IntPtr.Zero ) throw new ArgumentNullException ( "window handle is not crated." );
return window;
}
[DllImport("user32.dll")]
private static extern long SetWindowLong(IntPtr hwnd,int index,long val);
[DllImport("user32.dll")]
private static extern int SendMessage( IntPtr hwnd, int msg, int wParam, int lParam);
}
}
{
using System;
using System.Drawing;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Windows.Forms;
/**//// <summary>
/// Summary description for NativeMethods.
/// </summary>
public class NativeMethods
{
private const long WS_POPUP = 0x80000000;
private const long TTS_BALLOON = 0x40;
private const long TTS_NOFADE = 0x20;
private const int GWL_STYLE = -16;
private const int WM_USER = 0x0400;
private const int TTM_SETTIPBKCOLOR = WM_USER + 19;
private NativeMethods() {}
public static void SetBalloonStyle ( ToolTip toolTip )
{
NativeWindow window = GetNativeWindow ( toolTip );
NativeMethods.SetWindowLong ( window.Handle, GWL_STYLE , WS_POPUP | TTS_BALLOON | TTS_NOFADE );
}
public static void SetBackColor ( ToolTip toolTip, Color color )
{
int backColor = ColorTranslator.ToWin32( color );
NativeWindow window = GetNativeWindow ( toolTip );
//setting back color
SendMessage( window.Handle, TTM_SETTIPBKCOLOR, backColor, 0 );
}
private static NativeWindow GetNativeWindow ( ToolTip toolTip )
{
FieldInfo windowField = toolTip.GetType().GetField("window", BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance );
NativeWindow window = (NativeWindow)windowField.GetValue ( toolTip );
if ( window.Handle == IntPtr.Zero ) throw new ArgumentNullException ( "window handle is not crated." );
return window;
}
[DllImport("user32.dll")]
private static extern long SetWindowLong(IntPtr hwnd,int index,long val);
[DllImport("user32.dll")]
private static extern int SendMessage( IntPtr hwnd, int msg, int wParam, int lParam);
}
}
2.使用方法
NativeMethods.SetBalloonStyle ( toolTip1 );