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
- CopyOnWriteList.cs
- SqlDesignerDataSourceView.cs
- StylusOverProperty.cs
- StorageEndPropertyMapping.cs
- CngKeyBlobFormat.cs
- CultureInfoConverter.cs
- MeshGeometry3D.cs
- LoginUtil.cs
- BooleanAnimationBase.cs
- TypeBuilder.cs
- ObjectConverter.cs
- EmptyControlCollection.cs
- ActionFrame.cs
- SnapshotChangeTrackingStrategy.cs
- SqlUtil.cs
- XmlEntity.cs
- DataGridViewButtonColumn.cs
- ControlsConfig.cs
- Region.cs
- PropertyFilterAttribute.cs
- RowParagraph.cs
- XmlNode.cs
- FrugalMap.cs
- ScopelessEnumAttribute.cs
- CompilationLock.cs
- FamilyCollection.cs
- DependencyObject.cs
- Journaling.cs
- XmlDocument.cs
- WmlListAdapter.cs
- Int16.cs
- MdiWindowListItemConverter.cs
- QilFunction.cs
- StrongNamePublicKeyBlob.cs
- XPathDocumentNavigator.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- FixedPageStructure.cs
- TextBounds.cs
- ConstraintManager.cs
- MetabaseSettingsIis7.cs
- UrlMappingsSection.cs
- WindowsGrip.cs
- ContentPresenter.cs
- TabItemAutomationPeer.cs
- DiagnosticTrace.cs
- ObjectStateManager.cs
- ColumnResizeUndoUnit.cs
- BooleanAnimationBase.cs
- ToolStripHighContrastRenderer.cs
- DataGridViewRowHeaderCell.cs
- ActiveXContainer.cs
- MessageSecurityOverMsmq.cs
- SqlRecordBuffer.cs
- DataGridViewImageColumn.cs
- WebPermission.cs
- SingleTagSectionHandler.cs
- SQLDateTime.cs
- ToolStripOverflow.cs
- ScrollProviderWrapper.cs
- CalculatedColumn.cs
- CodeTypeParameter.cs
- DataGridItemEventArgs.cs
- URL.cs
- PhysicalAddress.cs
- StyleSelector.cs
- SerializationException.cs
- XsltException.cs
- WebPartHelpVerb.cs
- DtcInterfaces.cs
- XmlUtilWriter.cs
- IsolatedStoragePermission.cs
- ConnectionsZoneAutoFormat.cs
- AnimationClock.cs
- PointAnimationBase.cs
- HtmlInputImage.cs
- DataObjectSettingDataEventArgs.cs
- SqlException.cs
- ProjectionRewriter.cs
- SQLDateTime.cs
- ExpandedWrapper.cs
- SynchronizedInputHelper.cs
- DiscoveryClientProtocol.cs
- SubqueryRules.cs
- DataGridCommandEventArgs.cs
- PageContentAsyncResult.cs
- SortFieldComparer.cs
- TableRowGroup.cs
- SqlServices.cs
- DataGridViewTextBoxCell.cs
- QuaternionConverter.cs
- SmtpNtlmAuthenticationModule.cs
- CodeRemoveEventStatement.cs
- ChangesetResponse.cs
- SQLGuid.cs
- ShapingWorkspace.cs
- XmlFormatReaderGenerator.cs
- AnalyzedTree.cs
- COM2AboutBoxPropertyDescriptor.cs
- MultipleCopiesCollection.cs
- StateWorkerRequest.cs