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
- OrthographicCamera.cs
- StringCollection.cs
- LocalTransaction.cs
- KeyPressEvent.cs
- FixedTextPointer.cs
- ViewGenResults.cs
- IndexedWhereQueryOperator.cs
- IsolatedStorageFilePermission.cs
- BindMarkupExtensionSerializer.cs
- X509Utils.cs
- TabControlCancelEvent.cs
- BindToObject.cs
- SqlMetaData.cs
- ObservableCollection.cs
- DataSourceControl.cs
- StreamGeometry.cs
- SweepDirectionValidation.cs
- FixedFlowMap.cs
- VectorAnimation.cs
- XPathEmptyIterator.cs
- EnvelopedPkcs7.cs
- TreeNode.cs
- RSAOAEPKeyExchangeDeformatter.cs
- BitmapFrameDecode.cs
- ChangeNode.cs
- DesignerGenericWebPart.cs
- CodeDOMProvider.cs
- SspiSecurityTokenProvider.cs
- FontWeights.cs
- DataControlLinkButton.cs
- MethodToken.cs
- MetadataPropertyAttribute.cs
- DetailsViewDeleteEventArgs.cs
- IndependentAnimationStorage.cs
- UIElementAutomationPeer.cs
- XmlSerializerOperationGenerator.cs
- CorrelationManager.cs
- TableLayoutRowStyleCollection.cs
- _PooledStream.cs
- DecimalConverter.cs
- Parallel.cs
- InstanceBehavior.cs
- DataGridViewElement.cs
- StringArrayConverter.cs
- SourceElementsCollection.cs
- ScriptControlManager.cs
- InfiniteTimeSpanConverter.cs
- DataControlFieldCollection.cs
- StateMachine.cs
- EasingFunctionBase.cs
- XmlSchemaSimpleContentRestriction.cs
- ResourceManager.cs
- TypeUsageBuilder.cs
- PropertyIDSet.cs
- AsymmetricAlgorithm.cs
- BulletChrome.cs
- AutomationPropertyInfo.cs
- coordinatorfactory.cs
- BindingMemberInfo.cs
- ConfigurationFileMap.cs
- CalendarTable.cs
- ApplicationException.cs
- SamlAuthorizationDecisionClaimResource.cs
- ReferenceService.cs
- EntitySqlQueryBuilder.cs
- TransactionManagerProxy.cs
- DataPagerFieldItem.cs
- DesignSurfaceManager.cs
- ListBoxAutomationPeer.cs
- DataGridRow.cs
- ExtenderProvidedPropertyAttribute.cs
- XamlPointCollectionSerializer.cs
- DoubleCollection.cs
- EventMap.cs
- Function.cs
- TextChangedEventArgs.cs
- EncoderReplacementFallback.cs
- DiscreteKeyFrames.cs
- CanExecuteRoutedEventArgs.cs
- RequestBringIntoViewEventArgs.cs
- OdbcTransaction.cs
- DataControlField.cs
- Constraint.cs
- GuidelineSet.cs
- Row.cs
- Queue.cs
- LoginName.cs
- MessageBox.cs
- XmlDataDocument.cs
- SemaphoreFullException.cs
- ObfuscateAssemblyAttribute.cs
- InputReport.cs
- DbDataRecord.cs
- HttpsTransportBindingElement.cs
- ReliableMessagingHelpers.cs
- GeneralTransformGroup.cs
- XmlQualifiedNameTest.cs
- XmlStringTable.cs
- VerificationAttribute.cs
- ListBoxItemAutomationPeer.cs