public bool PreFilterMessage(ref Message m)
            {
                if ((WM)m.Msg == WM.MOUSEWHEEL)
                {
                  // Only handle messages if the control belongs to our form.
                  Win32.POINT cursorPoint = new Win32.POINT();
                  Win32.GetCursorPos(ref cursorPoint);
                  IntPtr targetWindow = Win32.WindowFromPoint(cursorPoint);
                  Control control = Control.FromChildHandle(targetWindow);
                  if (control != null && ControlUtilities.ContainsControl(form.contentHeaderPanel, control))
                  {
                // Forward the message to the control or the first of its parents which can have scrollbars.
                while (control != null && !(control is ScrollableControl))
                  control = control.Parent;
                if (control != null)
                {
                  Win32.SendMessage(control.Handle, m.Msg, m.WParam, m.LParam);
                  return true;
                }
                  }
                }

                return false;
            }
        /// <summary>
        /// Sets the given bitmap as window content with transparent parts via the
        /// layered windows API.
        /// </summary>
        /// <param name="bitmap">The bitmap to set.</param>
        /// <param name="opacity">The overall opacity (255 = opaque).</param>
        public static void SetBitmap(Control control, Bitmap bitmap, int opacity)
        {
            if (bitmap.PixelFormat != PixelFormat.Format32bppArgb)
            throw new ApplicationException("The bitmap must be 32ppp with alpha-channel.");

              IntPtr screenDc = Win32.GetDC(IntPtr.Zero);
              IntPtr memDc = Win32.CreateCompatibleDC(screenDc);
              IntPtr hBitmap = IntPtr.Zero;
              IntPtr oldBitmap = IntPtr.Zero;

              try
              {
            hBitmap = bitmap.GetHbitmap(Color.FromArgb(0));  // grab a GDI handle from this GDI+ bitmap
            oldBitmap = Win32.SelectObject(memDc, hBitmap);

            Win32.SIZE size = new Win32.SIZE(bitmap.Width, bitmap.Height);
            Win32.POINT pointSource = new Win32.POINT(0, 0);
            Win32.POINT topPos = new Win32.POINT(control.Left, control.Top);
            Win32.BLENDFUNCTION blend = new Win32.BLENDFUNCTION();
            blend.BlendOp = Win32.AC_SRC_OVER;
            blend.BlendFlags = 0;
            blend.SourceConstantAlpha = (byte)opacity;
            blend.AlphaFormat = Win32.AC_SRC_ALPHA;

            if (!control.IsDisposed && !control.Disposing)
            {
              Win32.UpdateLayeredWindow(control.Handle, screenDc, ref topPos, ref size, memDc,
            ref pointSource, 0, ref blend, Win32.ULW_ALPHA);
            }
              }
              finally
              {
            Win32.ReleaseDC(IntPtr.Zero, screenDc);
            if (hBitmap != IntPtr.Zero)
            {
              Win32.SelectObject(memDc, oldBitmap);
              Win32.DeleteObject(hBitmap);
            }
            Win32.DeleteDC(memDc);
              }
        }