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
- XmlSchemaElement.cs
- MenuCommandService.cs
- DockPanel.cs
- SqlWebEventProvider.cs
- ElementHostPropertyMap.cs
- Thread.cs
- Monitor.cs
- ObjectListDesigner.cs
- XmlTypeMapping.cs
- UseLicense.cs
- PropertyDescriptor.cs
- CachedPathData.cs
- Message.cs
- XamlPathDataSerializer.cs
- CollectionsUtil.cs
- MobileContainerDesigner.cs
- X509ServiceCertificateAuthentication.cs
- SystemIPGlobalProperties.cs
- ObjectViewEntityCollectionData.cs
- FontInfo.cs
- HttpBufferlessInputStream.cs
- DataGridViewCellPaintingEventArgs.cs
- RegexReplacement.cs
- RelationshipSet.cs
- LayoutUtils.cs
- OdbcTransaction.cs
- PlatformNotSupportedException.cs
- TaskExtensions.cs
- TabRenderer.cs
- SimpleRecyclingCache.cs
- NamedPipeConnectionPoolSettings.cs
- AccessViolationException.cs
- GeneralTransform3DGroup.cs
- DispatcherOperation.cs
- Merger.cs
- UIntPtr.cs
- SettingsSavedEventArgs.cs
- HttpCachePolicy.cs
- ModelChangedEventArgsImpl.cs
- PointCollectionValueSerializer.cs
- RightsManagementManager.cs
- CachedPathData.cs
- ExpressionCopier.cs
- ProtocolImporter.cs
- ComboBoxItem.cs
- PagesChangedEventArgs.cs
- ConfigurationErrorsException.cs
- WebBrowserHelper.cs
- HeaderUtility.cs
- OutputCacheSettings.cs
- FontSizeConverter.cs
- Transform.cs
- MemberDescriptor.cs
- BindingMAnagerBase.cs
- ManipulationVelocities.cs
- RegexFCD.cs
- HMACSHA512.cs
- XsdBuilder.cs
- CollectionViewSource.cs
- Rotation3D.cs
- ConfigurationLockCollection.cs
- InputLanguageCollection.cs
- DataGridViewCellStyleChangedEventArgs.cs
- DataControlFieldCollection.cs
- FileDataSourceCache.cs
- Manipulation.cs
- DesignerVerbCollection.cs
- IPEndPoint.cs
- MatrixCamera.cs
- TextWriterTraceListener.cs
- KeyEvent.cs
- TypeSemantics.cs
- HybridDictionary.cs
- ThousandthOfEmRealDoubles.cs
- TableParagraph.cs
- ServerValidateEventArgs.cs
- SemaphoreSecurity.cs
- ToolstripProfessionalRenderer.cs
- SmtpNtlmAuthenticationModule.cs
- DataReaderContainer.cs
- ColumnResizeUndoUnit.cs
- IndexedWhereQueryOperator.cs
- UserControl.cs
- GcHandle.cs
- HtmlInputPassword.cs
- MatrixTransform3D.cs
- MergeLocalizationDirectives.cs
- ClipboardProcessor.cs
- RuleInfoComparer.cs
- ConstructorNeedsTagAttribute.cs
- RelativeSource.cs
- SmiMetaDataProperty.cs
- EllipseGeometry.cs
- FrameworkElement.cs
- ConstrainedDataObject.cs
- Component.cs
- ChannelListenerBase.cs
- FontFamilyValueSerializer.cs
- BamlTreeNode.cs
- UIPermission.cs