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
- HealthMonitoringSection.cs
- ErrorWrapper.cs
- ListSourceHelper.cs
- CultureInfo.cs
- RoamingStoreFile.cs
- AccessKeyManager.cs
- ComponentResourceKeyConverter.cs
- ListMarkerLine.cs
- DbConnectionInternal.cs
- NotificationContext.cs
- CacheRequest.cs
- ServiceNameElementCollection.cs
- _LazyAsyncResult.cs
- Geometry.cs
- MultiAsyncResult.cs
- StorageAssociationSetMapping.cs
- TextBounds.cs
- GraphicsContainer.cs
- processwaithandle.cs
- SettingsProviderCollection.cs
- ResourceProviderFactory.cs
- FileSystemInfo.cs
- SyndicationElementExtension.cs
- XmlSerializer.cs
- BamlStream.cs
- ThreadStartException.cs
- XsdDuration.cs
- NegatedCellConstant.cs
- SQLDateTime.cs
- IconBitmapDecoder.cs
- ToolStripRenderEventArgs.cs
- LoadWorkflowByKeyAsyncResult.cs
- EventMetadata.cs
- GridViewRowPresenter.cs
- AppDomainProtocolHandler.cs
- SqlCachedBuffer.cs
- PropertyInformationCollection.cs
- HttpGetProtocolReflector.cs
- RsaSecurityToken.cs
- SiblingIterators.cs
- EpmCustomContentDeSerializer.cs
- GroupQuery.cs
- SafeUserTokenHandle.cs
- VisualStyleInformation.cs
- PathFigure.cs
- RoutedCommand.cs
- mediaeventshelper.cs
- _HelperAsyncResults.cs
- DnsCache.cs
- _DisconnectOverlappedAsyncResult.cs
- ApplicationDirectory.cs
- Brush.cs
- Evaluator.cs
- InvokeMethod.cs
- ExpressionTable.cs
- RelatedCurrencyManager.cs
- EventToken.cs
- ExpressionLexer.cs
- UIElement.cs
- VisualStyleInformation.cs
- TimeStampChecker.cs
- SemanticBasicElement.cs
- CursorEditor.cs
- FixedTextSelectionProcessor.cs
- RectKeyFrameCollection.cs
- SiteMap.cs
- DeleteHelper.cs
- ActivityStatusChangeEventArgs.cs
- Positioning.cs
- IsolatedStoragePermission.cs
- SafeLibraryHandle.cs
- LocalBuilder.cs
- SelectionRange.cs
- DataException.cs
- VisualStyleRenderer.cs
- X500Name.cs
- CqlParserHelpers.cs
- SafeTimerHandle.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- TextTreeTextNode.cs
- RadioButton.cs
- XmlCharCheckingWriter.cs
- HtmlForm.cs
- TCPListener.cs
- ModifyActivitiesPropertyDescriptor.cs
- NotifyParentPropertyAttribute.cs
- CategoryNameCollection.cs
- MD5HashHelper.cs
- DBSchemaTable.cs
- ValidationErrorCollection.cs
- DnsPermission.cs
- ApplicationDirectoryMembershipCondition.cs
- FileDataSourceCache.cs
- XmlNamedNodeMap.cs
- Point.cs
- NetworkStream.cs
- BmpBitmapDecoder.cs
- BooleanProjectedSlot.cs
- UpDownEvent.cs
- Decorator.cs