Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- MultipartContentParser.cs
- ToolboxDataAttribute.cs
- HtmlDocument.cs
- WaitingCursor.cs
- KnownColorTable.cs
- UserInitiatedNavigationPermission.cs
- ObjectDataSourceMethodEventArgs.cs
- DateTimeSerializationSection.cs
- EtwTrace.cs
- BaseProcessor.cs
- HtmlSelect.cs
- QueryPageSettingsEventArgs.cs
- WebPartVerbsEventArgs.cs
- DynamicFilterExpression.cs
- ResourceWriter.cs
- DataListCommandEventArgs.cs
- HwndTarget.cs
- DoubleUtil.cs
- PersonalizationEntry.cs
- XmlCharCheckingWriter.cs
- AspNetSynchronizationContext.cs
- NameSpaceExtractor.cs
- CounterCreationDataConverter.cs
- Automation.cs
- ClassValidator.cs
- SchemaTypeEmitter.cs
- DatatypeImplementation.cs
- HtmlHistory.cs
- ListViewDeletedEventArgs.cs
- FixedSOMContainer.cs
- SqlDataSource.cs
- Delay.cs
- ConnectorSelectionGlyph.cs
- Command.cs
- SqlNamer.cs
- AutomationPatternInfo.cs
- PauseStoryboard.cs
- Pair.cs
- DataGridViewDesigner.cs
- ColorAnimationUsingKeyFrames.cs
- EntityUtil.cs
- XmlSubtreeReader.cs
- ChainedAsyncResult.cs
- TextTreeTextBlock.cs
- SmuggledIUnknown.cs
- DocumentOrderQuery.cs
- RenameRuleObjectDialog.cs
- ManagementBaseObject.cs
- CompilerInfo.cs
- PartBasedPackageProperties.cs
- ClassicBorderDecorator.cs
- HtmlControlPersistable.cs
- FormViewInsertEventArgs.cs
- DefaultBinder.cs
- OleDbConnection.cs
- AudioSignalProblemOccurredEventArgs.cs
- QuerySetOp.cs
- DocumentGrid.cs
- ObjectSet.cs
- HotCommands.cs
- RemoteHelper.cs
- WindowsAltTab.cs
- CannotUnloadAppDomainException.cs
- XmlEntityReference.cs
- WindowsScrollBarBits.cs
- DesignerForm.cs
- PixelFormatConverter.cs
- UTF32Encoding.cs
- ReachFixedDocumentSerializer.cs
- AddressUtility.cs
- HtmlWindowCollection.cs
- XPathNodeHelper.cs
- RegexTree.cs
- CodeRegionDirective.cs
- MouseGesture.cs
- TreeViewImageKeyConverter.cs
- Rule.cs
- CultureInfo.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- ObjectDisposedException.cs
- PingReply.cs
- PropertyDescriptorGridEntry.cs
- ClientOperation.cs
- FrameworkReadOnlyPropertyMetadata.cs
- ContentPlaceHolder.cs
- SqlProviderServices.cs
- UIElementCollection.cs
- EventLogInternal.cs
- EntryPointNotFoundException.cs
- ScriptingAuthenticationServiceSection.cs
- BitmapEffectDrawingContextWalker.cs
- ResourceExpressionBuilder.cs
- WhitespaceRule.cs
- MatrixTransform3D.cs
- _TLSstream.cs
- Bitmap.cs
- ValidatorUtils.cs
- PrintingPermission.cs
- ObjectListCommand.cs
- XmlMemberMapping.cs