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
- DocumentGrid.cs
- Polyline.cs
- CodeDomComponentSerializationService.cs
- ContentHostHelper.cs
- BooleanAnimationBase.cs
- ScriptRegistrationManager.cs
- QueryContinueDragEvent.cs
- ExpandCollapseProviderWrapper.cs
- CodeComment.cs
- CurrentChangingEventManager.cs
- XmlElement.cs
- IgnoreFileBuildProvider.cs
- ListViewPagedDataSource.cs
- WebConfigurationFileMap.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- StreamSecurityUpgradeProvider.cs
- PenLineJoinValidation.cs
- UnitControl.cs
- FirewallWrapper.cs
- SystemWebCachingSectionGroup.cs
- hwndwrapper.cs
- TypeSource.cs
- SourceFilter.cs
- XmlEncoding.cs
- EventSourceCreationData.cs
- NamespaceList.cs
- BitmapEffectInput.cs
- TemplateColumn.cs
- AuthStoreRoleProvider.cs
- TableProviderWrapper.cs
- RowToFieldTransformer.cs
- smtpconnection.cs
- Viewport3DAutomationPeer.cs
- BamlCollectionHolder.cs
- HyperLinkStyle.cs
- webclient.cs
- SrgsNameValueTag.cs
- DataGridViewSelectedColumnCollection.cs
- DelegateSerializationHolder.cs
- OleDbSchemaGuid.cs
- ObjectTag.cs
- UIElement3DAutomationPeer.cs
- RegexParser.cs
- LinqDataSourceStatusEventArgs.cs
- ColorTransformHelper.cs
- UITypeEditor.cs
- Boolean.cs
- StorageFunctionMapping.cs
- CompositeActivityTypeDescriptorProvider.cs
- Thumb.cs
- TypeToStringValueConverter.cs
- UnauthorizedWebPart.cs
- PeerCollaboration.cs
- XmlNamespaceDeclarationsAttribute.cs
- EditBehavior.cs
- ReceiveErrorHandling.cs
- XmlIgnoreAttribute.cs
- ContainerUtilities.cs
- BStrWrapper.cs
- SafeCryptoHandles.cs
- WindowsSolidBrush.cs
- EntityAdapter.cs
- HtmlTitle.cs
- SafeNativeMethods.cs
- XmlSchemaImport.cs
- ProxyWebPartConnectionCollection.cs
- RunWorkerCompletedEventArgs.cs
- DataShape.cs
- ExceptionNotification.cs
- GeometryModel3D.cs
- Convert.cs
- SizeFConverter.cs
- DiffuseMaterial.cs
- TypeListConverter.cs
- MailDefinition.cs
- XmlAutoDetectWriter.cs
- X509Chain.cs
- WebPartConnectionsConfigureVerb.cs
- CodeDomSerializationProvider.cs
- XmlSignificantWhitespace.cs
- XmlObjectSerializerContext.cs
- OperationFormatStyle.cs
- GPPOINT.cs
- PlainXmlSerializer.cs
- ToolStrip.cs
- DbProviderManifest.cs
- MappingException.cs
- ActivationArguments.cs
- SelectionHighlightInfo.cs
- COM2PictureConverter.cs
- ClosableStream.cs
- QilLoop.cs
- ViewPort3D.cs
- CleanUpVirtualizedItemEventArgs.cs
- PackWebRequest.cs
- ResourceWriter.cs
- TextParentUndoUnit.cs
- XPathSingletonIterator.cs
- PeerToPeerException.cs
- StandardBindingImporter.cs