Exemplo n.º 1
0
        public void SystemParametersInfoW_check_fonts()
        {
            NONCLIENTMETRICSW data = default;

            bool result = SystemParametersInfoW(ref data);

            Assert.True(result);

            Font captionFont = Font.FromLogFont(data.lfCaptionFont);

            AreEqual(SystemFonts.CaptionFont !, captionFont);

            Font menuFont = Font.FromLogFont(data.lfMenuFont);

            AreEqual(SystemFonts.CaptionFont !, menuFont);

            Font messageFont = Font.FromLogFont(data.lfMessageFont);

            AreEqual(SystemFonts.MessageBoxFont !, messageFont);

            Font smCaptionFont = Font.FromLogFont(data.lfSmCaptionFont);

            AreEqual(SystemFonts.SmallCaptionFont !, smCaptionFont);

            Font statusFont = Font.FromLogFont(data.lfStatusFont);

            AreEqual(SystemFonts.StatusFont !, statusFont);
 public unsafe static bool SystemParametersInfoW(ref NONCLIENTMETRICSW metrics)
 {
     fixed(void *p = &metrics)
     {
         metrics.cbSize = (uint)sizeof(NONCLIENTMETRICSW);
         return(SystemParametersInfoW(
                    SPI.GETNONCLIENTMETRICS,
                    metrics.cbSize,
                    p,
                    0)); // This has no meaning when getting values
     }
 }
Exemplo n.º 3
0
        public static Font CreateSystemUIFont()
        {
            using (StructureBuffer <NONCLIENTMETRICSW> metricsPtr = new StructureBuffer <NONCLIENTMETRICSW>())
            {
                const int SPI_GETNONCLIENTMETRICS = 0x29;

                NONCLIENTMETRICSW metrics = new NONCLIENTMETRICSW();
                metrics.cbSize   = Marshal.SizeOf <NONCLIENTMETRICSW>();
                metricsPtr.Value = metrics;

                NativeMethods.SystemParametersInfoW(SPI_GETNONCLIENTMETRICS, metricsPtr.Size, metricsPtr.Handle, 0);
                return(new Font(metricsPtr.Value.lfMessageFont));
            }
        }
        /// <summary>
        ///  Tries to get system parameter info for the dpi. dpi is ignored if "SystemParametersInfoForDpi()" API is not available on the OS that this application is running.
        /// </summary>
        public unsafe static bool TrySystemParametersInfoForDpi(ref NONCLIENTMETRICSW metrics, uint dpi)
        {
            if (OsVersion.IsWindows10_1607OrGreater)
            {
                metrics.cbSize = (uint)sizeof(NONCLIENTMETRICSW);
                return(SystemParametersInfoForDpi(
                           SPI.GETNONCLIENTMETRICS,
                           metrics.cbSize,
                           ref metrics,
                           0,
                           dpi));
            }

            return(SystemParametersInfoW(ref metrics));
        }
 public static extern bool SystemParametersInfoForDpi(
     SPI uiAction,
     uint uiParam,
     ref NONCLIENTMETRICSW pvParam,
     uint fWinIni,
     uint dpi);