Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / WinForms / Managed / System / WinForms / ColorDialog.cs / 1 / ColorDialog.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Windows.Forms { using System.Runtime.InteropServices; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System; using System.Drawing; using System.ComponentModel; using System.Windows.Forms; using Microsoft.Win32; using System.Security; using System.Security.Permissions; ////// /// [DefaultProperty("Color")] [SRDescription(SR.DescriptionColorDialog)] // The only event this dialog has is HelpRequest, which isn't very useful public class ColorDialog : CommonDialog { private int options; private int[] customColors; ////// Represents a common dialog box that displays available colors along with /// controls that allow the user to define custom colors. /// ////// /// ///private Color color; /// /// /// [ SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors") // If the constructor does not call Reset // it would be a breaking change. ] public ColorDialog() { customColors = new int[16]; Reset(); } ////// Initializes a new instance of the ////// class. /// /// /// [ SRCategory(SR.CatBehavior), DefaultValue(true), SRDescription(SR.CDallowFullOpenDescr) ] public virtual bool AllowFullOpen { get { return !GetOption(NativeMethods.CC_PREVENTFULLOPEN); } set { SetOption(NativeMethods.CC_PREVENTFULLOPEN, !value); } } ////// Gets or sets a value indicating whether the user can use the dialog box /// to define custom colors. /// ////// /// [ SRCategory(SR.CatBehavior), DefaultValue(false), SRDescription(SR.CDanyColorDescr) ] public virtual bool AnyColor { get { return GetOption(NativeMethods.CC_ANYCOLOR); } set { SetOption(NativeMethods.CC_ANYCOLOR, value); } } ////// Gets or sets a value indicating whether the dialog box displays all available colors in /// the set of basic colors. /// ////// /// [ SRCategory(SR.CatData), SRDescription(SR.CDcolorDescr) ] public Color Color { get { return color; } set { if (!value.IsEmpty) { color = value; } else { color = Color.Black; } } } ////// Gets or sets the color selected by the user. /// ////// /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), SRDescription(SR.CDcustomColorsDescr) ] public int[] CustomColors { get { return(int[]) customColors.Clone();} set { int length = value == null? 0: Math.Min(value.Length, 16); if (length > 0) Array.Copy(value, 0, customColors, 0, length); for (int i = length; i < 16; i++) customColors[i] = 0x00FFFFFF; } } ////// Gets or sets the set of /// custom colors shown in the dialog box. /// ////// /// [ SRCategory(SR.CatAppearance), DefaultValue(false), SRDescription(SR.CDfullOpenDescr) ] public virtual bool FullOpen { get { return GetOption(NativeMethods.CC_FULLOPEN); } set { SetOption(NativeMethods.CC_FULLOPEN, value); } } ////// Gets or sets a value indicating whether the controls used to create custom /// colors are visible when the dialog box is opened /// ////// /// /// protected virtual IntPtr Instance { [ SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode), SecurityPermission(SecurityAction.InheritanceDemand, Flags=SecurityPermissionFlag.UnmanagedCode) ] get { return UnsafeNativeMethods.GetModuleHandle(null);} } ////// Our HINSTANCE from Windows. /// ////// /// Returns our CHOOSECOLOR options. /// ///protected virtual int Options { get { return options; } } /// /// /// [ SRCategory(SR.CatBehavior), DefaultValue(false), SRDescription(SR.CDshowHelpDescr) ] public virtual bool ShowHelp { get { return GetOption(NativeMethods.CC_SHOWHELP); } set { SetOption(NativeMethods.CC_SHOWHELP, value); } } ////// Gets or sets a value indicating whether a Help button appears /// in the color dialog box. /// ////// /// [ SRCategory(SR.CatBehavior), DefaultValue(false), SRDescription(SR.CDsolidColorOnlyDescr) ] public virtual bool SolidColorOnly { get { return GetOption(NativeMethods.CC_SOLIDCOLOR); } set { SetOption(NativeMethods.CC_SOLIDCOLOR, value); } } ////// Gets /// or sets a value indicating /// whether the dialog /// box will restrict users to selecting solid colors only. /// ////// /// Lets us control the CHOOSECOLOR options. /// ///private bool GetOption(int option) { return(options & option) != 0; } /// /// /// public override void Reset() { options = 0; color = Color.Black; CustomColors = null; } private void ResetColor() { Color = Color.Black; } ////// Resets /// all options to their /// default values, the last selected color to black, and the custom /// colors to their default values. /// ////// /// ///protected override bool RunDialog(IntPtr hwndOwner) { NativeMethods.WndProc hookProcPtr = new NativeMethods.WndProc(this.HookProc); NativeMethods.CHOOSECOLOR cc = new NativeMethods.CHOOSECOLOR(); IntPtr custColorPtr = Marshal.AllocCoTaskMem(64); try { Marshal.Copy(customColors, 0, custColorPtr, 16); cc.hwndOwner = hwndOwner; cc.hInstance = Instance; cc.rgbResult = ColorTranslator.ToWin32(color); cc.lpCustColors = custColorPtr; int flags = Options | (NativeMethods.CC_RGBINIT | NativeMethods.CC_ENABLEHOOK); // Our docs say AllowFullOpen takes precedence over FullOpen; ChooseColor implements the opposite if (!AllowFullOpen) flags &= ~NativeMethods.CC_FULLOPEN; cc.Flags = flags; cc.lpfnHook = hookProcPtr; if (!SafeNativeMethods.ChooseColor(cc)) return false; if (cc.rgbResult != ColorTranslator.ToWin32(color)) color = ColorTranslator.FromOle(cc.rgbResult); Marshal.Copy(custColorPtr, customColors, 0, 16); return true; } finally { Marshal.FreeCoTaskMem(custColorPtr); } } /// /// /// Allows us to manipulate the CHOOSECOLOR options /// ///private void SetOption(int option, bool value) { if (value) { options |= option; } else { options &= ~option; } } /// /// /// private bool ShouldSerializeColor() { return !Color.Equals(Color.Black); } ////// Indicates whether the ///property should be /// persisted. /// /// /// /// public override string ToString() { string s = base.ToString(); return s + ", Color: " + Color.ToString(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ ///// Provides a string version of this object. /// ///// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Windows.Forms { using System.Runtime.InteropServices; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; using System; using System.Drawing; using System.ComponentModel; using System.Windows.Forms; using Microsoft.Win32; using System.Security; using System.Security.Permissions; ////// /// [DefaultProperty("Color")] [SRDescription(SR.DescriptionColorDialog)] // The only event this dialog has is HelpRequest, which isn't very useful public class ColorDialog : CommonDialog { private int options; private int[] customColors; ////// Represents a common dialog box that displays available colors along with /// controls that allow the user to define custom colors. /// ////// /// ///private Color color; /// /// /// [ SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors") // If the constructor does not call Reset // it would be a breaking change. ] public ColorDialog() { customColors = new int[16]; Reset(); } ////// Initializes a new instance of the ////// class. /// /// /// [ SRCategory(SR.CatBehavior), DefaultValue(true), SRDescription(SR.CDallowFullOpenDescr) ] public virtual bool AllowFullOpen { get { return !GetOption(NativeMethods.CC_PREVENTFULLOPEN); } set { SetOption(NativeMethods.CC_PREVENTFULLOPEN, !value); } } ////// Gets or sets a value indicating whether the user can use the dialog box /// to define custom colors. /// ////// /// [ SRCategory(SR.CatBehavior), DefaultValue(false), SRDescription(SR.CDanyColorDescr) ] public virtual bool AnyColor { get { return GetOption(NativeMethods.CC_ANYCOLOR); } set { SetOption(NativeMethods.CC_ANYCOLOR, value); } } ////// Gets or sets a value indicating whether the dialog box displays all available colors in /// the set of basic colors. /// ////// /// [ SRCategory(SR.CatData), SRDescription(SR.CDcolorDescr) ] public Color Color { get { return color; } set { if (!value.IsEmpty) { color = value; } else { color = Color.Black; } } } ////// Gets or sets the color selected by the user. /// ////// /// [ Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), SRDescription(SR.CDcustomColorsDescr) ] public int[] CustomColors { get { return(int[]) customColors.Clone();} set { int length = value == null? 0: Math.Min(value.Length, 16); if (length > 0) Array.Copy(value, 0, customColors, 0, length); for (int i = length; i < 16; i++) customColors[i] = 0x00FFFFFF; } } ////// Gets or sets the set of /// custom colors shown in the dialog box. /// ////// /// [ SRCategory(SR.CatAppearance), DefaultValue(false), SRDescription(SR.CDfullOpenDescr) ] public virtual bool FullOpen { get { return GetOption(NativeMethods.CC_FULLOPEN); } set { SetOption(NativeMethods.CC_FULLOPEN, value); } } ////// Gets or sets a value indicating whether the controls used to create custom /// colors are visible when the dialog box is opened /// ////// /// /// protected virtual IntPtr Instance { [ SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.UnmanagedCode), SecurityPermission(SecurityAction.InheritanceDemand, Flags=SecurityPermissionFlag.UnmanagedCode) ] get { return UnsafeNativeMethods.GetModuleHandle(null);} } ////// Our HINSTANCE from Windows. /// ////// /// Returns our CHOOSECOLOR options. /// ///protected virtual int Options { get { return options; } } /// /// /// [ SRCategory(SR.CatBehavior), DefaultValue(false), SRDescription(SR.CDshowHelpDescr) ] public virtual bool ShowHelp { get { return GetOption(NativeMethods.CC_SHOWHELP); } set { SetOption(NativeMethods.CC_SHOWHELP, value); } } ////// Gets or sets a value indicating whether a Help button appears /// in the color dialog box. /// ////// /// [ SRCategory(SR.CatBehavior), DefaultValue(false), SRDescription(SR.CDsolidColorOnlyDescr) ] public virtual bool SolidColorOnly { get { return GetOption(NativeMethods.CC_SOLIDCOLOR); } set { SetOption(NativeMethods.CC_SOLIDCOLOR, value); } } ////// Gets /// or sets a value indicating /// whether the dialog /// box will restrict users to selecting solid colors only. /// ////// /// Lets us control the CHOOSECOLOR options. /// ///private bool GetOption(int option) { return(options & option) != 0; } /// /// /// public override void Reset() { options = 0; color = Color.Black; CustomColors = null; } private void ResetColor() { Color = Color.Black; } ////// Resets /// all options to their /// default values, the last selected color to black, and the custom /// colors to their default values. /// ////// /// ///protected override bool RunDialog(IntPtr hwndOwner) { NativeMethods.WndProc hookProcPtr = new NativeMethods.WndProc(this.HookProc); NativeMethods.CHOOSECOLOR cc = new NativeMethods.CHOOSECOLOR(); IntPtr custColorPtr = Marshal.AllocCoTaskMem(64); try { Marshal.Copy(customColors, 0, custColorPtr, 16); cc.hwndOwner = hwndOwner; cc.hInstance = Instance; cc.rgbResult = ColorTranslator.ToWin32(color); cc.lpCustColors = custColorPtr; int flags = Options | (NativeMethods.CC_RGBINIT | NativeMethods.CC_ENABLEHOOK); // Our docs say AllowFullOpen takes precedence over FullOpen; ChooseColor implements the opposite if (!AllowFullOpen) flags &= ~NativeMethods.CC_FULLOPEN; cc.Flags = flags; cc.lpfnHook = hookProcPtr; if (!SafeNativeMethods.ChooseColor(cc)) return false; if (cc.rgbResult != ColorTranslator.ToWin32(color)) color = ColorTranslator.FromOle(cc.rgbResult); Marshal.Copy(custColorPtr, customColors, 0, 16); return true; } finally { Marshal.FreeCoTaskMem(custColorPtr); } } /// /// /// Allows us to manipulate the CHOOSECOLOR options /// ///private void SetOption(int option, bool value) { if (value) { options |= option; } else { options &= ~option; } } /// /// /// private bool ShouldSerializeColor() { return !Color.Equals(Color.Black); } ////// Indicates whether the ///property should be /// persisted. /// /// /// /// public override string ToString() { string s = base.ToString(); return s + ", Color: " + Color.ToString(); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007./// Provides a string version of this object. /// ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ToolStripMenuItemCodeDomSerializer.cs
- FilterQueryOptionExpression.cs
- BooleanAnimationBase.cs
- ObjectDataSourceChooseMethodsPanel.cs
- StaticDataManager.cs
- ReadOnlyNameValueCollection.cs
- QuadraticBezierSegment.cs
- MulticastDelegate.cs
- BinHexEncoder.cs
- SqlTransaction.cs
- DashStyles.cs
- SchemaAttDef.cs
- FormsAuthentication.cs
- IntegrationExceptionEventArgs.cs
- ObjectDataSourceSelectingEventArgs.cs
- FileDialogCustomPlaces.cs
- CatalogZone.cs
- WebPartEditorApplyVerb.cs
- ParameterBuilder.cs
- WindowsFormsSectionHandler.cs
- OutOfProcStateClientManager.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- TreeViewAutomationPeer.cs
- CodeExporter.cs
- DecoderFallback.cs
- XmlSerializerVersionAttribute.cs
- SystemWebSectionGroup.cs
- ResourceType.cs
- SourceElementsCollection.cs
- TrackingCondition.cs
- DesignerRegionCollection.cs
- WinEventWrap.cs
- Column.cs
- HtmlHistory.cs
- CheckBoxField.cs
- JsonMessageEncoderFactory.cs
- XmlnsPrefixAttribute.cs
- WebBrowserUriTypeConverter.cs
- ConnectionPoint.cs
- DependencyObjectType.cs
- XmlSignatureManifest.cs
- PropertyChangingEventArgs.cs
- WindowsAltTab.cs
- StylusPlugInCollection.cs
- ProfilePropertySettingsCollection.cs
- Merger.cs
- SqlConnectionFactory.cs
- ProtocolsConfiguration.cs
- XsdSchemaFileEditor.cs
- translator.cs
- EdmType.cs
- WmlControlAdapter.cs
- FixedTextBuilder.cs
- GeneratedCodeAttribute.cs
- DefaultValueAttribute.cs
- ObjectItemCollection.cs
- ViewKeyConstraint.cs
- MinimizableAttributeTypeConverter.cs
- DiscardableAttribute.cs
- RecognizerStateChangedEventArgs.cs
- SqlNamer.cs
- EndpointAddressMessageFilterTable.cs
- PropertyFilterAttribute.cs
- Content.cs
- SchemaAttDef.cs
- TypeValidationEventArgs.cs
- DocumentPaginator.cs
- HttpTransportSecurity.cs
- XmlText.cs
- ImageMapEventArgs.cs
- _DigestClient.cs
- ArithmeticException.cs
- SqlDataSourceQueryConverter.cs
- VectorCollectionValueSerializer.cs
- DateTimeFormat.cs
- EventDescriptorCollection.cs
- DataGridViewTextBoxColumn.cs
- _ChunkParse.cs
- HtmlTitle.cs
- SqlConnectionStringBuilder.cs
- WaitHandle.cs
- SqlDataSourceParameterParser.cs
- TreeNode.cs
- ConfigurationPropertyCollection.cs
- PropertyTabChangedEvent.cs
- NotifyIcon.cs
- ServiceBusyException.cs
- WsdlInspector.cs
- CacheMode.cs
- GenerateTemporaryTargetAssembly.cs
- MatrixTransform.cs
- HtmlWindowCollection.cs
- PersonalizableTypeEntry.cs
- ForeignKeyConstraint.cs
- RenderTargetBitmap.cs
- ObjectDataSourceMethodEventArgs.cs
- TableItemPattern.cs
- SByteStorage.cs
- MultipartContentParser.cs
- BindingElement.cs