/// <summary> /// Initializes a new instance of the <see cref="SettingsStorage" /> class. /// </summary> /// <param name="path">The registry path.</param> /// <param name="defaults">The default values.</param> public SettingsStorage(string path, IDefaults defaults) { if (path == null) { throw new ArgumentNullException(nameof(path)); } if (defaults == null) { throw new ArgumentNullException(nameof(defaults)); } try { this.registry = Registry.CurrentUser.CreateSubKey(path); this.displayMode = DisplayMode.Select(this[nameof(DisplayMode)]); this.useVerticalSync = this[nameof(UseVerticalSync)].ParseAsBoolean(defaults.UseVerticalSync); this.useFrameRateLimit = this[nameof(UseFrameRateLimit)].ParseAsBoolean(defaults.UseFrameRateLimit); } catch (Exception error) { Trace.TraceError("Failed to open the registry key '{0}'. {1}", path, error); } }
/// <summary> /// Sets the display mode. /// </summary> /// <param name="displayMode">The display mode.</param> /// <returns>True if the display mode was changed, otherwise false.</returns> public static bool Set(DisplayMode displayMode) { if (Current != displayMode) { if (displayMode != null && !displayMode.IsDefault) { ChangeDisplaySettingsEx(null, ref displayMode.settings, NULL, CDS.FULLSCREEN, NULL); } else if (Current != null && !Current.IsDefault) { ChangeDisplaySettingsEx(null, NULL, NULL, 0, NULL); } Current = displayMode; return true; } return false; }