//=====================================================================

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="window">The parent window for the tool tip window</param>
        internal NativeToolTipWindow(IWin32Window window)
        {
            // Determine the correct messages to use
            if (Marshal.SystemDefaultCharSize == 1)
            {
                // Win9x
                TTM_ADDTOOL       = TTM_ADDTOOLA;
                TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTA;
            }
            else
            {
                // NT/XP
                TTM_ADDTOOL       = TTM_ADDTOOLW;
                TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTW;
            }

            owner = window;

            CreateParams cp = new CreateParams();

            cp.Parent    = owner.Handle;
            cp.ClassName = TOOLTIP_CLASS;
            cp.Style     = TTS_ALWAYSTIP | TTS_NOPREFIX;

            this.CreateHandle(cp);

            // Make the window topmost
            UnsafeNativeMethods.SetWindowPos(this.Handle, new IntPtr(-1), 0, 0, 0, 0,
                                             19 /*SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE*/);

            ti = new TOOLINFO(TTF_IDISHWND | TTF_TRACK | TTF_ABSOLUTE, owner.Handle);
            UnsafeNativeMethods.SendMessage(this.Handle, TTM_ADDTOOL, IntPtr.Zero, ref ti);

            // All subsequent uses just need this flag
            ti.flags = TTF_IDISHWND;
        }
 internal static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, ref TOOLINFO lParam);
 internal static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, ref TOOLINFO lParam);
        //=====================================================================
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="window">The parent window for the tool tip window</param>
        internal NativeToolTipWindow(IWin32Window window)
        {
            // Determine the correct messages to use
            if(Marshal.SystemDefaultCharSize == 1)
            {
                // Win9x
                TTM_ADDTOOL = TTM_ADDTOOLA;
                TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTA;
            }
            else
            {
                // NT/XP
                TTM_ADDTOOL = TTM_ADDTOOLW;
                TTM_UPDATETIPTEXT = TTM_UPDATETIPTEXTW;
            }

            owner = window;

            CreateParams cp = new CreateParams();
            cp.Parent = owner.Handle;
            cp.ClassName = TOOLTIP_CLASS;
            cp.Style = TTS_ALWAYSTIP | TTS_NOPREFIX;

            this.CreateHandle(cp);

            // Make the window topmost
            UnsafeNativeMethods.SetWindowPos(this.Handle, new IntPtr(-1), 0, 0, 0, 0,
                19 /*SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE*/);

            ti = new TOOLINFO(TTF_IDISHWND | TTF_TRACK | TTF_ABSOLUTE, owner.Handle);
            UnsafeNativeMethods.SendMessage(this.Handle, TTM_ADDTOOL, IntPtr.Zero, ref ti);

            // All subsequent uses just need this flag
            ti.flags = TTF_IDISHWND;
        }