Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Documents / MoveSizeWinEventHandler.cs / 1 / MoveSizeWinEventHandler.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: MoveSizeWinEventHandler implementation. // // History: // 02/04/2005 : yutakas - created. // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using MS.Win32; using MS.Internal; namespace System.Windows.Documents { internal class MoveSizeWinEventHandler : WinEventHandler { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors // ctor that takes a range of events internal MoveSizeWinEventHandler() : base(NativeMethods.EVENT_SYSTEM_MOVESIZEEND, NativeMethods.EVENT_SYSTEM_MOVESIZEEND) { } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods // Register text store that will receive move/sice event. internal void RegisterTextStore(TextStore textstore) { if (_arTextStore == null) { _arTextStore = new ArrayList(1); } _arTextStore.Add(textstore); } // Unregister text store. internal void UnregisterTextStore(TextStore textstore) { _arTextStore.Remove(textstore); } // The callback from WinEvent. ////// Critical - as this invokes Critical method CriticalSourceHwnd /// TreatAsSafe - as this doesn't expose this information but just calls OnLayoutUpdated on the TextStore. /// [SecurityCritical, SecurityTreatAsSafe] internal override void WinEventProc(int eventId, IntPtr hwnd) { Invariant.Assert(eventId == NativeMethods.EVENT_SYSTEM_MOVESIZEEND); if (_arTextStore != null) { for (int i = 0; i < _arTextStore.Count; i++) { bool notified = false; TextStore textstore = (TextStore)_arTextStore[i]; IntPtr hwndTemp = textstore.CriticalSourceWnd; while (hwndTemp != IntPtr.Zero) { if (hwnd == hwndTemp) { // Only when the parent window of the source of this TextStore is // moved or resized, we notfiy to Cicero. textstore.OnLayoutUpdated(); notified = true; break; } hwndTemp = UnsafeNativeMethods.GetParent(new HandleRef(this, hwndTemp)); } if (!notified) textstore.MakeLayoutChangeOnGotFocus(); } } } #endregion Internal Methods //------------------------------------------------------ // // Internal Properties // //------------------------------------------------------ #region Internal Properties // Number of TextStores listening to this event. internal int TextStoreCount { get { return _arTextStore.Count; } } #endregion Internal Properties //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ #region Private Fields // list of the registered TextStores. private ArrayList _arTextStore; #endregion Private Fields } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: MoveSizeWinEventHandler implementation. // // History: // 02/04/2005 : yutakas - created. // //--------------------------------------------------------------------------- using System; using System.Collections; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using MS.Win32; using MS.Internal; namespace System.Windows.Documents { internal class MoveSizeWinEventHandler : WinEventHandler { //----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors // ctor that takes a range of events internal MoveSizeWinEventHandler() : base(NativeMethods.EVENT_SYSTEM_MOVESIZEEND, NativeMethods.EVENT_SYSTEM_MOVESIZEEND) { } #endregion Constructors //------------------------------------------------------ // // Internal Methods // //----------------------------------------------------- #region Internal Methods // Register text store that will receive move/sice event. internal void RegisterTextStore(TextStore textstore) { if (_arTextStore == null) { _arTextStore = new ArrayList(1); } _arTextStore.Add(textstore); } // Unregister text store. internal void UnregisterTextStore(TextStore textstore) { _arTextStore.Remove(textstore); } // The callback from WinEvent. ////// Critical - as this invokes Critical method CriticalSourceHwnd /// TreatAsSafe - as this doesn't expose this information but just calls OnLayoutUpdated on the TextStore. /// [SecurityCritical, SecurityTreatAsSafe] internal override void WinEventProc(int eventId, IntPtr hwnd) { Invariant.Assert(eventId == NativeMethods.EVENT_SYSTEM_MOVESIZEEND); if (_arTextStore != null) { for (int i = 0; i < _arTextStore.Count; i++) { bool notified = false; TextStore textstore = (TextStore)_arTextStore[i]; IntPtr hwndTemp = textstore.CriticalSourceWnd; while (hwndTemp != IntPtr.Zero) { if (hwnd == hwndTemp) { // Only when the parent window of the source of this TextStore is // moved or resized, we notfiy to Cicero. textstore.OnLayoutUpdated(); notified = true; break; } hwndTemp = UnsafeNativeMethods.GetParent(new HandleRef(this, hwndTemp)); } if (!notified) textstore.MakeLayoutChangeOnGotFocus(); } } } #endregion Internal Methods //------------------------------------------------------ // // Internal Properties // //------------------------------------------------------ #region Internal Properties // Number of TextStores listening to this event. internal int TextStoreCount { get { return _arTextStore.Count; } } #endregion Internal Properties //----------------------------------------------------- // // Private Fields // //------------------------------------------------------ #region Private Fields // list of the registered TextStores. private ArrayList _arTextStore; #endregion Private Fields } } // 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
- UnauthorizedAccessException.cs
- RoleService.cs
- VectorValueSerializer.cs
- DoubleCollectionConverter.cs
- FixedSOMLineCollection.cs
- DoubleUtil.cs
- Point4D.cs
- ApplicationInfo.cs
- AsymmetricKeyExchangeDeformatter.cs
- WhitespaceRule.cs
- RtfToken.cs
- EntityDesignerBuildProvider.cs
- HttpModuleActionCollection.cs
- oledbmetadatacollectionnames.cs
- MasterPage.cs
- DataGridSortCommandEventArgs.cs
- Trace.cs
- PermissionSet.cs
- BlurEffect.cs
- MetadataArtifactLoaderCompositeResource.cs
- sitestring.cs
- ToolStripDropDownButton.cs
- VirtualizingStackPanel.cs
- SiteMapNodeCollection.cs
- ListViewAutomationPeer.cs
- FilterFactory.cs
- FormParameter.cs
- SqlUserDefinedAggregateAttribute.cs
- RuntimeIdentifierPropertyAttribute.cs
- InvalidProgramException.cs
- HighContrastHelper.cs
- SystemWebExtensionsSectionGroup.cs
- IsolatedStoragePermission.cs
- EnumBuilder.cs
- DelegateSerializationHolder.cs
- DefaultSection.cs
- NamespaceListProperty.cs
- PersonalizationState.cs
- ObjectDataSourceFilteringEventArgs.cs
- ListSourceHelper.cs
- GeometryValueSerializer.cs
- BindStream.cs
- AuthenticationModuleElement.cs
- MethodInfo.cs
- MessageBox.cs
- ContextStaticAttribute.cs
- HostedHttpContext.cs
- FormViewDesigner.cs
- ColorIndependentAnimationStorage.cs
- Container.cs
- FontResourceCache.cs
- EastAsianLunisolarCalendar.cs
- EntityViewGenerationConstants.cs
- TdsParserStaticMethods.cs
- SmtpClient.cs
- IntranetCredentialPolicy.cs
- FullTrustAssembliesSection.cs
- AccessedThroughPropertyAttribute.cs
- Clause.cs
- DesignerForm.cs
- XXXOnTypeBuilderInstantiation.cs
- bidPrivateBase.cs
- EditorAttribute.cs
- ReferenceConverter.cs
- XmlSchemaAttributeGroup.cs
- DBConnectionString.cs
- Wizard.cs
- ClientSettingsSection.cs
- PropertyConverter.cs
- FactoryRecord.cs
- XmlChildNodes.cs
- MonthCalendar.cs
- PolyLineSegmentFigureLogic.cs
- WebHttpSecurityModeHelper.cs
- BlockCollection.cs
- PrivilegedConfigurationManager.cs
- xmlfixedPageInfo.cs
- ScriptControl.cs
- ObjectDataSourceSelectingEventArgs.cs
- XmlDataSourceNodeDescriptor.cs
- AppSecurityManager.cs
- ServiceOperationListItem.cs
- DependencyObjectCodeDomSerializer.cs
- _Rfc2616CacheValidators.cs
- GenerateTemporaryAssemblyTask.cs
- SpotLight.cs
- InvalidTimeZoneException.cs
- UnitySerializationHolder.cs
- UpdateException.cs
- EventQueueState.cs
- Automation.cs
- UIElementAutomationPeer.cs
- OleDbCommandBuilder.cs
- ResourceDictionaryCollection.cs
- TerminatorSinks.cs
- CodeNamespaceImportCollection.cs
- ProcessModuleCollection.cs
- AuthenticationException.cs
- XmlQueryType.cs
- DbExpressionRules.cs