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
- FamilyMap.cs
- RenderData.cs
- RoutedEvent.cs
- WebPartZoneCollection.cs
- UrlPropertyAttribute.cs
- TextCompositionManager.cs
- SharingService.cs
- Scheduler.cs
- FileAuthorizationModule.cs
- RandomNumberGenerator.cs
- CollectionBase.cs
- AxisAngleRotation3D.cs
- CalloutQueueItem.cs
- DataGridViewDataErrorEventArgs.cs
- ScriptComponentDescriptor.cs
- MessageTransmitTraceRecord.cs
- EndpointIdentityExtension.cs
- IsolatedStorageFile.cs
- QualifiedId.cs
- PermissionRequestEvidence.cs
- VectorCollectionValueSerializer.cs
- itemelement.cs
- NativeRightsManagementAPIsStructures.cs
- DataGridViewColumnStateChangedEventArgs.cs
- StreamingContext.cs
- InlineCollection.cs
- MessageLoggingElement.cs
- XsdDuration.cs
- SqlTriggerContext.cs
- DependencyPropertyHelper.cs
- HttpResponseHeader.cs
- MediaCommands.cs
- ConfigurationManagerInternalFactory.cs
- OperatorExpressions.cs
- RequiredFieldValidator.cs
- ViewEventArgs.cs
- QilStrConcat.cs
- EmbossBitmapEffect.cs
- ItemCollection.cs
- CompoundFileStorageReference.cs
- ToolboxItemCollection.cs
- PathSegment.cs
- HighlightComponent.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- RubberbandSelector.cs
- PagerSettings.cs
- SingleKeyFrameCollection.cs
- Brushes.cs
- ClassData.cs
- DataGridColumnHeaderAutomationPeer.cs
- FieldAccessException.cs
- ConfigurationFileMap.cs
- DataGridBeginningEditEventArgs.cs
- Encoder.cs
- ControlIdConverter.cs
- LogEntryDeserializer.cs
- MsmqMessageProperty.cs
- PlatformNotSupportedException.cs
- WindowsPrincipal.cs
- MouseGestureValueSerializer.cs
- ClientApiGenerator.cs
- TrackingExtract.cs
- VarRefManager.cs
- TraceFilter.cs
- ErrorFormatter.cs
- PropertyGeneratedEventArgs.cs
- SqlCharStream.cs
- ConfigXmlElement.cs
- DesignTimeTemplateParser.cs
- EntityDataSourceDesigner.cs
- WmlTextViewAdapter.cs
- BrowserCapabilitiesCodeGenerator.cs
- Dictionary.cs
- EastAsianLunisolarCalendar.cs
- Unit.cs
- SecurityDocument.cs
- HtmlInputRadioButton.cs
- ParentQuery.cs
- AutomationPattern.cs
- TimeManager.cs
- InternalRelationshipCollection.cs
- SessionEndedEventArgs.cs
- RuntimeWrappedException.cs
- OciEnlistContext.cs
- ThemeDirectoryCompiler.cs
- KeyConstraint.cs
- LogicalExpr.cs
- PreservationFileWriter.cs
- BuildProviderUtils.cs
- ConfigurationProperty.cs
- LinkedList.cs
- TextServicesHost.cs
- OleDbErrorCollection.cs
- Operand.cs
- SymbolTable.cs
- PropertyKey.cs
- TraceProvider.cs
- _NativeSSPI.cs
- WeakEventManager.cs
- VirtualizingStackPanel.cs