Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / DisplayInformation.cs / 1 / DisplayInformation.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
/*
*/
namespace System.Windows.Forms {
using Microsoft.Win32;
using System.Security;
using System.Security.Permissions;
internal class DisplayInformation {
private static bool highContrast; //whether we are under hight contrast mode
private static bool lowRes; //whether we are under low resolution mode
private static bool isTerminalServerSession; //whether this application is run on a terminal server (remote desktop)
private static bool highContrastSettingValid; //indicates whether the high contrast setting is correct
private static bool lowResSettingValid; //indicates whether the low resolution setting is correct
private static bool terminalSettingValid; //indicates whether the terminal server setting is correct
private static short bitsPerPixel = 0;
private static bool dropShadowSettingValid;
private static bool dropShadowEnabled;
private static bool menuAccessKeysUnderlinedValid;
private static bool menuAccessKeysUnderlined;
static DisplayInformation() {
SystemEvents.UserPreferenceChanging += new UserPreferenceChangingEventHandler(UserPreferenceChanging);
SystemEvents.DisplaySettingsChanging += new EventHandler(DisplaySettingsChanging);
}
public static short BitsPerPixel {
get {
if (bitsPerPixel == 0) {
// we used to iterate through all screens, but
// for some reason unused screens can temparily appear
// in the AllScreens collection - we would honor the display
// setting of an unused screen.
// According to EnumDisplayMonitors, a primary screen check should be sufficient
bitsPerPixel = (short)Screen.PrimaryScreen.BitsPerPixel;
}
return bitsPerPixel;
}
}
///
///tests to see if the monitor is in low resolution mode (8-bit color depth or less).
///
public static bool LowResolution {
get {
if (lowResSettingValid && !lowRes) {
return lowRes;
}
// dont cache if we're in low resolution.
lowRes = BitsPerPixel <= 8;
lowResSettingValid = true;
return lowRes;
}
}
///
///tests to see if we are under high contrast mode
///
public static bool HighContrast {
get {
if (highContrastSettingValid) {
return highContrast;
}
highContrast = SystemInformation.HighContrast;
highContrastSettingValid = true;
return highContrast;
}
}
public static bool IsDropShadowEnabled {
get {
if (dropShadowSettingValid) {
return dropShadowEnabled;
}
dropShadowEnabled = SystemInformation.IsDropShadowEnabled;
dropShadowSettingValid = true;
return dropShadowEnabled;
}
}
///
///test to see if we are under terminal server mode
///
public static bool TerminalServer {
get {
if (terminalSettingValid) {
return isTerminalServerSession;
}
isTerminalServerSession = SystemInformation.TerminalServerSession;
terminalSettingValid = true;
return isTerminalServerSession;
}
}
// return if mnemonic underlines should always be there regardless of ALT
public static bool MenuAccessKeysUnderlined {
get {
if (menuAccessKeysUnderlinedValid) {
return menuAccessKeysUnderlined;
}
menuAccessKeysUnderlined = SystemInformation.MenuAccessKeysUnderlined;
menuAccessKeysUnderlinedValid = true;
return menuAccessKeysUnderlined;
}
}
///
///event handler for change in display setting
///
private static void DisplaySettingsChanging(object obj, EventArgs ea)
{
highContrastSettingValid = false;
lowResSettingValid = false;
terminalSettingValid = false;
dropShadowSettingValid = false;
menuAccessKeysUnderlinedValid = false;
}
///
///event handler for change in user preference
///
private static void UserPreferenceChanging(object obj, UserPreferenceChangingEventArgs e) {
highContrastSettingValid = false;
lowResSettingValid = false;
terminalSettingValid = false;
dropShadowSettingValid = false;
bitsPerPixel = 0;
if (e.Category == UserPreferenceCategory.General) {
menuAccessKeysUnderlinedValid =false;
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ImageSourceValueSerializer.cs
- GenericXmlSecurityToken.cs
- NativeWindow.cs
- ScrollEventArgs.cs
- FullTrustAssembly.cs
- SettingsPropertyWrongTypeException.cs
- DataGridPagerStyle.cs
- ImageSource.cs
- CompositeTypefaceMetrics.cs
- safex509handles.cs
- SmtpReplyReader.cs
- LogWriteRestartAreaState.cs
- _AutoWebProxyScriptEngine.cs
- DetailsViewRow.cs
- HttpWebResponse.cs
- ToolStripRenderer.cs
- ImageFormatConverter.cs
- TableLayoutPanelCellPosition.cs
- SqlCacheDependencyDatabase.cs
- HttpResponse.cs
- RemoteWebConfigurationHost.cs
- MultiTouchSystemGestureLogic.cs
- ControlOperationBehavior.cs
- Point3DCollectionValueSerializer.cs
- XPathScanner.cs
- ElementHostAutomationPeer.cs
- CompilationUnit.cs
- StopStoryboard.cs
- BindingCompleteEventArgs.cs
- Quaternion.cs
- RewritingSimplifier.cs
- TableLayoutStyleCollection.cs
- InstancePersistence.cs
- CompositionDesigner.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- WsdlBuildProvider.cs
- StrongNameIdentityPermission.cs
- ProcessHostConfigUtils.cs
- DataControlFieldCollection.cs
- SettingsBindableAttribute.cs
- Matrix3DConverter.cs
- SelectorItemAutomationPeer.cs
- MaterialGroup.cs
- IntranetCredentialPolicy.cs
- Task.cs
- AttributeSetAction.cs
- FormView.cs
- BitmapPalette.cs
- ValidatingReaderNodeData.cs
- PackageDigitalSignature.cs
- GridViewUpdateEventArgs.cs
- PerformanceCounter.cs
- DataListItemCollection.cs
- SystemWebSectionGroup.cs
- CodePageEncoding.cs
- FormCollection.cs
- HostedHttpContext.cs
- Thread.cs
- FloatUtil.cs
- ReferenceEqualityComparer.cs
- AesCryptoServiceProvider.cs
- HttpChannelHelper.cs
- IdentifierCreationService.cs
- FilePrompt.cs
- Win32Interop.cs
- XsltLoader.cs
- PtsPage.cs
- SafeHandles.cs
- MessageHeaderException.cs
- XmlSchemas.cs
- InkCanvas.cs
- CrossSiteScriptingValidation.cs
- DropDownButton.cs
- ClientTargetSection.cs
- InteropBitmapSource.cs
- SapiRecognizer.cs
- ViewLoader.cs
- FileNameEditor.cs
- ObsoleteAttribute.cs
- GroupStyle.cs
- AnimationLayer.cs
- XmlChildEnumerator.cs
- RangeValidator.cs
- DataRelationPropertyDescriptor.cs
- XmlDictionaryString.cs
- SqlComparer.cs
- KeyTimeConverter.cs
- Switch.cs
- DirectoryInfo.cs
- TextModifierScope.cs
- LayoutEvent.cs
- PtsCache.cs
- TextEndOfParagraph.cs
- TextEditorSpelling.cs
- LoginName.cs
- RectAnimationUsingKeyFrames.cs
- DataRelationPropertyDescriptor.cs
- TypeKeyValue.cs
- TypedServiceOperationListItem.cs
- DataControlFieldCollection.cs