Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- LineServicesRun.cs
- DigitShape.cs
- WsatConfiguration.cs
- DefaultParameterValueAttribute.cs
- SuppressIldasmAttribute.cs
- GridViewColumnHeader.cs
- __Filters.cs
- SemanticKeyElement.cs
- AppDomainProtocolHandler.cs
- PagerSettings.cs
- ResourcePool.cs
- SortDescription.cs
- EntityDataSourceChangingEventArgs.cs
- PathParser.cs
- RemoteWebConfigurationHost.cs
- VectorAnimation.cs
- NameSpaceExtractor.cs
- FindCompletedEventArgs.cs
- Page.cs
- PeerInputChannel.cs
- XmlWrappingReader.cs
- SecurityState.cs
- ServicePoint.cs
- PersonalizationAdministration.cs
- FormsAuthentication.cs
- CompilerResults.cs
- BaseInfoTable.cs
- WebPartsPersonalization.cs
- TextServicesManager.cs
- DataGridHeaderBorder.cs
- EntityDesignerDataSourceView.cs
- InputScopeAttribute.cs
- XmlParserContext.cs
- BaseComponentEditor.cs
- ForwardPositionQuery.cs
- TextContainerHelper.cs
- StylusPointDescription.cs
- MatrixAnimationBase.cs
- PropertyEmitter.cs
- Size3D.cs
- WebPartRestoreVerb.cs
- DataGridLinkButton.cs
- TracingConnectionListener.cs
- ReturnType.cs
- StylusLogic.cs
- DataControlExtensions.cs
- SourceInterpreter.cs
- ListViewGroupConverter.cs
- ComAdminInterfaces.cs
- TraceSection.cs
- ImageKeyConverter.cs
- ClipboardProcessor.cs
- DataPointer.cs
- InvokeHandlers.cs
- DesignerCommandAdapter.cs
- PassportAuthenticationEventArgs.cs
- AsymmetricKeyExchangeDeformatter.cs
- EnumConverter.cs
- Rule.cs
- UIElement3D.cs
- WindowHideOrCloseTracker.cs
- MulticastOption.cs
- CodeRegionDirective.cs
- SpinWait.cs
- Compensation.cs
- FigureParagraph.cs
- NavigationWindowAutomationPeer.cs
- SafeFileHandle.cs
- DescendantOverDescendantQuery.cs
- DesignerRegion.cs
- PerspectiveCamera.cs
- SiteMapDataSource.cs
- NetworkInformationPermission.cs
- PointLightBase.cs
- TextBox.cs
- PersonalizationEntry.cs
- DataGridItem.cs
- ConstNode.cs
- TimelineGroup.cs
- Adorner.cs
- TextTreePropertyUndoUnit.cs
- IPHostEntry.cs
- ReflectionServiceProvider.cs
- AttachedPropertyBrowsableAttribute.cs
- ZipFileInfo.cs
- PlanCompilerUtil.cs
- UnsafeNetInfoNativeMethods.cs
- SystemIPv4InterfaceProperties.cs
- HttpConfigurationSystem.cs
- TextElementCollection.cs
- ColumnHeaderConverter.cs
- BitVector32.cs
- _HeaderInfo.cs
- CfgParser.cs
- DirectoryLocalQuery.cs
- DelayDesigner.cs
- StreamMarshaler.cs
- CodeTypeReferenceCollection.cs
- StorageEntityContainerMapping.cs
- ThemeableAttribute.cs