Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / WinForms / Managed / System / WinForms / ComponentModel / COM2Interop / COM2FontConverter.cs / 1 / COM2FontConverter.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.Windows.Forms.ComponentModel.Com2Interop { using System.Runtime.Serialization.Formatters; using System.Runtime.InteropServices; using System.ComponentModel; using System.Diagnostics; using System; using System.Drawing; using System.Collections; using Microsoft.Win32; ////// /// This class maps an OLE_COLOR to a managed Color editor. /// internal class Com2FontConverter : Com2DataTypeToManagedDataTypeConverter { private IntPtr lastHandle = IntPtr.Zero; private Font lastFont = null; public override bool AllowExpand { get { return true; } } ////// /// Returns the managed type that this editor maps the property type to. /// public override Type ManagedType { get { return typeof(Font); } } ////// /// Converts the native value into a managed value /// public override object ConvertNativeToManaged(object nativeValue, Com2PropertyDescriptor pd) { // we're getting an IFont thing here UnsafeNativeMethods.IFont nativeFont = nativeValue as UnsafeNativeMethods.IFont; if (nativeFont == null) { lastHandle = IntPtr.Zero; lastFont = Control.DefaultFont; return lastFont; } IntPtr fontHandle = nativeFont.GetHFont(); // see if we have this guy cached if (fontHandle == lastHandle && lastFont != null) { return lastFont; } lastHandle = fontHandle; try { // this wasn't working because it was converting everything to // world units. // Font font = Font.FromHfont(lastHandle); try { lastFont = ControlPaint.FontInPoints(font); } finally { font.Dispose(); } } catch(ArgumentException) { // we will fail on non-truetype fonts, so // just use the default font. lastFont = Control.DefaultFont; } return lastFont; } ////// /// Converts the managed value into a native value /// public override object ConvertManagedToNative(object managedValue, Com2PropertyDescriptor pd, ref bool cancelSet) { // we default to black. // if (managedValue == null) { managedValue = Control.DefaultFont; } cancelSet = true; if (lastFont != null && lastFont.Equals(managedValue)) { // don't do anything here. return null; } lastFont = (Font)managedValue; UnsafeNativeMethods.IFont nativeFont = (UnsafeNativeMethods.IFont)pd.GetNativeValue(pd.TargetObject); // now, push all the values into the native side if (nativeFont != null) { bool changed = ControlPaint.FontToIFont(lastFont, nativeFont); if (changed) { // here, we want to pick up a new font from the handle lastFont = null; ConvertNativeToManaged(nativeFont, pd); } } return null; } } } // 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
- WebPartZone.cs
- DataGridViewRowsAddedEventArgs.cs
- RelatedView.cs
- PrinterUnitConvert.cs
- ViewUtilities.cs
- TextChangedEventArgs.cs
- nulltextnavigator.cs
- SubpageParaClient.cs
- AttachInfo.cs
- SubstitutionList.cs
- Vector3DAnimationUsingKeyFrames.cs
- OdbcDataReader.cs
- MemoryFailPoint.cs
- CustomAttribute.cs
- Restrictions.cs
- HttpException.cs
- ExceptionUtil.cs
- MachinePropertyVariants.cs
- ErrorWebPart.cs
- ThrowHelper.cs
- WCFModelStrings.Designer.cs
- UpdateCompiler.cs
- DisableDpiAwarenessAttribute.cs
- RemotingSurrogateSelector.cs
- MarkupExtensionReturnTypeAttribute.cs
- AppDomainInstanceProvider.cs
- SizeIndependentAnimationStorage.cs
- WindowsClaimSet.cs
- SqlClientWrapperSmiStreamChars.cs
- ViewStateModeByIdAttribute.cs
- TextContainer.cs
- ColumnMapCopier.cs
- GenericQueueSurrogate.cs
- SerializationException.cs
- ListenerElementsCollection.cs
- WebPermission.cs
- TdsParser.cs
- QualificationDataAttribute.cs
- ToolBar.cs
- ExcCanonicalXml.cs
- DispatcherObject.cs
- CompressionTransform.cs
- Condition.cs
- ChtmlTextWriter.cs
- Dynamic.cs
- SqlHelper.cs
- ConfigurationSectionCollection.cs
- SettingsPropertyIsReadOnlyException.cs
- BuiltInPermissionSets.cs
- MemoryMappedFile.cs
- updateconfighost.cs
- ProcessInfo.cs
- DelegateHelpers.cs
- TextRange.cs
- SymbolEqualComparer.cs
- SoapFault.cs
- ClientScriptManagerWrapper.cs
- GcHandle.cs
- XmlReturnReader.cs
- WorkflowInstanceExtensionProvider.cs
- WebRequestModuleElementCollection.cs
- CalendarDay.cs
- SqlInternalConnectionTds.cs
- WpfWebRequestHelper.cs
- InternalCache.cs
- JumpItem.cs
- DynamicRendererThreadManager.cs
- WebPartUtil.cs
- DictionaryMarkupSerializer.cs
- GridViewCancelEditEventArgs.cs
- XmlQueryContext.cs
- FileReservationCollection.cs
- arclist.cs
- RelationshipConverter.cs
- BindingExpressionBase.cs
- MachineKeyConverter.cs
- RefreshEventArgs.cs
- Message.cs
- KnownColorTable.cs
- InfoCardMasterKey.cs
- FileDialog_Vista_Interop.cs
- HttpHandlersSection.cs
- ValidationEventArgs.cs
- KeyInfo.cs
- ServiceControllerDesigner.cs
- WebControlParameterProxy.cs
- CacheHelper.cs
- GradientSpreadMethodValidation.cs
- ManualWorkflowSchedulerService.cs
- ClientSession.cs
- ToolboxDataAttribute.cs
- ProcessHostMapPath.cs
- SqlUtils.cs
- DataServiceContext.cs
- XmlAnyElementAttributes.cs
- XmlSchemaSubstitutionGroup.cs
- coordinator.cs
- WSDualHttpBinding.cs
- errorpatternmatcher.cs
- AllMembershipCondition.cs