Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / MoveSizeWinEventHandler.cs / 1305600 / 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
- ClientTargetCollection.cs
- BypassElementCollection.cs
- ServiceContractAttribute.cs
- EraserBehavior.cs
- RectAnimation.cs
- StructureChangedEventArgs.cs
- WebPartConnectionsConfigureVerb.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- HttpContextServiceHost.cs
- XmlCompatibilityReader.cs
- ClientEventManager.cs
- DataGridViewToolTip.cs
- IconBitmapDecoder.cs
- BaseCodeDomTreeGenerator.cs
- ComNativeDescriptor.cs
- TrustLevel.cs
- GridViewEditEventArgs.cs
- PropertyNames.cs
- TransformDescriptor.cs
- Types.cs
- TimeSpanFormat.cs
- SecurityTraceRecordHelper.cs
- PageAsyncTaskManager.cs
- sqlstateclientmanager.cs
- SqlFunctionAttribute.cs
- CachedPathData.cs
- SetterBaseCollection.cs
- SetStoryboardSpeedRatio.cs
- TextTreeRootNode.cs
- ActivationArguments.cs
- AddInStore.cs
- NegatedCellConstant.cs
- StylusTouchDevice.cs
- SimpleColumnProvider.cs
- LOSFormatter.cs
- PersistenceContextEnlistment.cs
- MultiAsyncResult.cs
- ComponentChangingEvent.cs
- SingleConverter.cs
- ServiceDefaults.cs
- UndirectedGraph.cs
- XPathAncestorQuery.cs
- HostingPreferredMapPath.cs
- DataServiceSaveChangesEventArgs.cs
- MetadataCache.cs
- SemanticTag.cs
- MimeParameter.cs
- PerformanceCounterCategory.cs
- ToolBarOverflowPanel.cs
- DocumentOrderQuery.cs
- LinearKeyFrames.cs
- SqlRowUpdatingEvent.cs
- Mappings.cs
- Maps.cs
- SudsCommon.cs
- DataGridViewCellCancelEventArgs.cs
- hresults.cs
- ellipse.cs
- DynamicExpression.cs
- XmlSignatureManifest.cs
- JoinQueryOperator.cs
- EmptyStringExpandableObjectConverter.cs
- ButtonBase.cs
- KeyEventArgs.cs
- EntityFunctions.cs
- AbstractSvcMapFileLoader.cs
- SmiXetterAccessMap.cs
- MenuItem.cs
- DrawingGroupDrawingContext.cs
- DBSqlParserTableCollection.cs
- AssemblyBuilderData.cs
- DictionaryBase.cs
- XmlCDATASection.cs
- DataBoundControlHelper.cs
- HttpTransportManager.cs
- WebServiceData.cs
- Debug.cs
- MouseActionValueSerializer.cs
- SweepDirectionValidation.cs
- Imaging.cs
- ApplicationBuildProvider.cs
- PrimarySelectionGlyph.cs
- WsdlInspector.cs
- DescendentsWalkerBase.cs
- Context.cs
- TreeView.cs
- XXXOnTypeBuilderInstantiation.cs
- LiteralControl.cs
- HelpKeywordAttribute.cs
- TrustVersion.cs
- ExceptionValidationRule.cs
- SafeCloseHandleCritical.cs
- StrongNameKeyPair.cs
- SerializationFieldInfo.cs
- Region.cs
- PointAnimationUsingKeyFrames.cs
- StubHelpers.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- SamlNameIdentifierClaimResource.cs
- SQLCharsStorage.cs