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
- SQLDecimal.cs
- ToolStripKeyboardHandlingService.cs
- XsltLoader.cs
- XmlComplianceUtil.cs
- TextChange.cs
- ExpressionSelection.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- WsdlInspector.cs
- UnionCodeGroup.cs
- TraceFilter.cs
- C14NUtil.cs
- CheckedPointers.cs
- unitconverter.cs
- XamlSerializerUtil.cs
- OleDbDataReader.cs
- SocketInformation.cs
- StorageEntitySetMapping.cs
- DataGridViewRowCollection.cs
- SystemSounds.cs
- TableHeaderCell.cs
- WindowsEditBoxRange.cs
- Transform3DGroup.cs
- ScrollPattern.cs
- BufferBuilder.cs
- SystemEvents.cs
- BackgroundFormatInfo.cs
- OdbcCommandBuilder.cs
- StylusCollection.cs
- DeferredElementTreeState.cs
- Interlocked.cs
- milexports.cs
- DirectoryNotFoundException.cs
- CacheVirtualItemsEvent.cs
- DataGridViewRowEventArgs.cs
- ChildrenQuery.cs
- WebDisplayNameAttribute.cs
- MatchAllMessageFilter.cs
- MouseButtonEventArgs.cs
- ZipIOLocalFileBlock.cs
- MultiTouchSystemGestureLogic.cs
- ValueProviderWrapper.cs
- MouseOverProperty.cs
- HandledMouseEvent.cs
- NavigationExpr.cs
- WebEventTraceProvider.cs
- TimeSpanMinutesConverter.cs
- oledbconnectionstring.cs
- InternalsVisibleToAttribute.cs
- PageResolution.cs
- EventSetter.cs
- SystemBrushes.cs
- JapaneseCalendar.cs
- cookiecontainer.cs
- XmlArrayItemAttribute.cs
- SortedDictionary.cs
- DirectoryGroupQuery.cs
- List.cs
- SafeNativeHandle.cs
- Listener.cs
- TransformerConfigurationWizardBase.cs
- StorageMappingItemCollection.cs
- Normalization.cs
- SoapCodeExporter.cs
- ProjectionQueryOptionExpression.cs
- X509Certificate.cs
- TabControl.cs
- UnsafeNativeMethodsCLR.cs
- DataServiceRequestException.cs
- ToolBarTray.cs
- CancellationTokenSource.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- ListItem.cs
- ExeContext.cs
- SerializerProvider.cs
- ListViewItemMouseHoverEvent.cs
- NetTcpBindingCollectionElement.cs
- RIPEMD160Managed.cs
- SymLanguageVendor.cs
- MetabaseServerConfig.cs
- AdPostCacheSubstitution.cs
- VirtualStackFrame.cs
- QilPatternFactory.cs
- PropertyGridEditorPart.cs
- DesignerFrame.cs
- Tag.cs
- ThreadExceptionEvent.cs
- DefaultTraceListener.cs
- CodePageUtils.cs
- SQLByteStorage.cs
- Char.cs
- EventRoute.cs
- UniqueTransportManagerRegistration.cs
- CompositeControl.cs
- TreeViewItem.cs
- PathFigureCollection.cs
- AmbientValueAttribute.cs
- ExpandCollapsePattern.cs
- AssemblySettingAttributes.cs
- CellPartitioner.cs
- SharedHttpTransportManager.cs