private static extern bool _UpdateLayeredWindowIntPtr(
     IntPtr hwnd,
     IntPtr hdcDst,
     IntPtr pptDst,
     IntPtr psize,
     IntPtr hdcSrc,
     IntPtr pptSrc,
     int crKey,
     ref BLENDFUNCTION pblend,
     ULW dwFlags);
 public static void UpdateLayeredWindow(
     IntPtr hwnd,
     int crKey,
     ref BLENDFUNCTION pblend,
     ULW dwFlags)
 {
     if (!_UpdateLayeredWindowIntPtr(hwnd, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero, crKey, ref pblend, dwFlags))
     {
         HRESULT.ThrowLastError();
     }
 }
 private static extern bool _UpdateLayeredWindow(
     IntPtr hwnd, 
     SafeDC hdcDst, 
     [In] ref POINT pptDst, 
     [In] ref SIZE psize, 
     SafeDC hdcSrc, 
     [In] ref POINT pptSrc,
     int crKey,
     ref BLENDFUNCTION pblend,
     ULW dwFlags);
 public static void UpdateLayeredWindow(
     IntPtr hwnd,
     SafeDC hdcDst,
     ref POINT pptDst,
     ref SIZE psize,
     SafeDC hdcSrc,
     ref POINT pptSrc,
     int crKey,
     ref BLENDFUNCTION pblend,
     ULW dwFlags)
 {
     if (!_UpdateLayeredWindow(hwnd, hdcDst, ref pptDst, ref psize, hdcSrc, ref pptSrc, crKey, ref pblend, dwFlags))
     {
         HRESULT.ThrowLastError();
     }
 }