Win32Interop.cs source code in C# .NET

Source code for the .NET framework in C#



/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / View / Win32Interop.cs / 1484997 / Win32Interop.cs

// Copyright (c) Microsoft Corporation.  All rights reserved.

namespace System.Activities.Presentation.View 
    using System; 
    using System.Runtime.InteropServices; 
    using System.Diagnostics.CodeAnalysis;

    static class Win32Interop
        public const int WM_SETICON = 0x80; 
        public const int WM_NCHITTEST = 0x84;
        public const int WM_SYSCOMMAND = 0x0112; 
        public const int GWL_STYLE = -16;
        public const int WS_MAXIMIZEBOX = 0x00010000; 
        public const int WS_MINIMIZEBOX = 0x00020000;

        public const int GWL_EXSTYLE = -20;
        public const int WS_EX_DLGMODALFRAME = 0x00000001; 
        public const int WS_EX_CONTEXTHELP = 0x00000400;
        public const int SC_CONTEXTHELP = 0xf180; 

        public const int ICON_SMALL = 0; 
        public const int ICON_BIG = 1;

        [DllImport("User32", EntryPoint = "ScreenToClient", SetLastError = true, ExactSpelling = true, CharSet = CharSet.Auto)]
        public static extern int ScreenToClient(IntPtr hWnd, [In, Out] POINT pt); 

        public sealed class POINT 
            public int x; 
            public int y;

            public POINT()
                this.x = 0;
                this.y = 0; 

            public POINT(int x, int y) 
                this.x = x;
                this.y = y;
        // This static method is required because legacy OSes do not support 
        // SetWindowLongPtr
        internal static IntPtr SetWindowLongPtr(HandleRef hWnd, int nIndex, IntPtr dwNewLong) 
            if (IntPtr.Size == 8)
                return SetWindowLongPtr64(hWnd, nIndex, dwNewLong);
                return new IntPtr(SetWindowLong32(hWnd, nIndex, dwNewLong.ToInt32()));

        // This static method is required because Win32 does not support 
        // GetWindowLongPtr directly
        public static IntPtr GetWindowLongPtr(IntPtr hWnd, int nIndex)
            if (IntPtr.Size == 8) 
                return GetWindowLongPtr64(hWnd, nIndex);
                return GetWindowLongPtr32(hWnd, nIndex); 
        [DllImport("user32.dll", EntryPoint = "SetWindowLong")]
        private static extern int SetWindowLong32(HandleRef hWnd, int nIndex, int dwNewLong);

        [DllImport("user32.dll", EntryPoint = "SetWindowLongPtr")] 
        private static extern IntPtr SetWindowLongPtr64(HandleRef hWnd, int nIndex, IntPtr dwNewLong);
        [SuppressMessage("Microsoft.Portability", "CA1901:PInvokeDeclarationsShouldBePortable", MessageId = "return", Justification = "Calling code is expected to handle the different size of IntPtr")] 
        [DllImport("user32.dll", EntryPoint = "GetWindowLong")]
        private static extern IntPtr GetWindowLongPtr32(IntPtr hWnd, int nIndex); 

        [DllImport("user32.dll", EntryPoint = "GetWindowLongPtr")]
        private static extern IntPtr GetWindowLongPtr64(IntPtr hWnd, int nIndex);
        public static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); 
        [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)]
        public static extern IntPtr GetActiveWindow(); 

        public static extern bool DeleteObject(IntPtr hObject);

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.


Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK