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 } }
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);