Esempio n. 1
0
        /*
         *      // Dpi awareness context values. Matching windows values.
         *      public static readonly DPI_AWARENESS_CONTEXT DPI_AWARENESS_CONTEXT_UNAWARE = (-1);
         *      public static readonly DPI_AWARENESS_CONTEXT DPI_AWARENESS_CONTEXT_SYSTEM_AWARE = (-2);
         *      public static readonly DPI_AWARENESS_CONTEXT DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = (-3);
         *      public static readonly DPI_AWARENESS_CONTEXT DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 = (-4);
         *      public static readonly DPI_AWARENESS_CONTEXT DPI_AWARENESS_CONTEXT_UNSPECIFIED = (0);*/

        internal static DpiAwarenessContext GetDpiAwarenessContextForWindow(IntPtr hWnd)
        {
            DpiAwarenessContext dpiAwarenessContext = DpiAwarenessContext.DPI_AWARENESS_CONTEXT_UNSPECIFIED;

            if (OsVersion.IsWindows10_1607OrGreater)
            {
                // Works only >= Windows 10/1607
                IntPtr awarenessContext        = User32.GetWindowDpiAwarenessContext(hWnd);
                User32.DPI_AWARENESS awareness = User32.GetAwarenessFromDpiAwarenessContext(awarenessContext);
                dpiAwarenessContext = ConvertToDpiAwarenessContext(awareness);
            }

            return(dpiAwarenessContext);
        }
Esempio n. 2
0
        private static DpiAwarenessContext ConvertToDpiAwarenessContext(User32.DPI_AWARENESS dpiAwareness)
        {
            switch (dpiAwareness)
            {
            case User32.DPI_AWARENESS.UNAWARE:
                return(DpiAwarenessContext.DPI_AWARENESS_CONTEXT_UNAWARE);

            case User32.DPI_AWARENESS.SYSTEM_AWARE:
                return(DpiAwarenessContext.DPI_AWARENESS_CONTEXT_SYSTEM_AWARE);

            case User32.DPI_AWARENESS.PER_MONITOR_AWARE:
                return(DpiAwarenessContext.DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2);

            default:
                return(DpiAwarenessContext.DPI_AWARENESS_CONTEXT_SYSTEM_AWARE);
            }
        }