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
- PasswordBoxAutomationPeer.cs
- SoapIgnoreAttribute.cs
- HelpProvider.cs
- ReliableRequestSessionChannel.cs
- ResourceDefaultValueAttribute.cs
- StylusCollection.cs
- ToolStripRendererSwitcher.cs
- ScrollableControlDesigner.cs
- ModelItemDictionaryImpl.cs
- ScrollChrome.cs
- SizeConverter.cs
- DataBindingList.cs
- StyleXamlParser.cs
- OwnerDrawPropertyBag.cs
- WmpBitmapDecoder.cs
- ToolStripSeparatorRenderEventArgs.cs
- ErrorRuntimeConfig.cs
- X509Certificate2.cs
- DispatchWrapper.cs
- StickyNoteHelper.cs
- EventItfInfo.cs
- Literal.cs
- ColorPalette.cs
- IsolatedStorage.cs
- IgnoreFlushAndCloseStream.cs
- DockAndAnchorLayout.cs
- SystemInfo.cs
- ExpressionEvaluator.cs
- ResourceSet.cs
- OracleEncoding.cs
- DesignerEventService.cs
- VectorKeyFrameCollection.cs
- XpsStructure.cs
- HostingEnvironmentException.cs
- DataGridState.cs
- XmlDigitalSignatureProcessor.cs
- ChainedAsyncResult.cs
- PackageFilter.cs
- DataRowView.cs
- ForeignConstraint.cs
- PropertyMapper.cs
- RuntimeConfig.cs
- WebBrowsableAttribute.cs
- GradientStop.cs
- HierarchicalDataSourceDesigner.cs
- StaticFileHandler.cs
- PersonalizationAdministration.cs
- HwndSourceParameters.cs
- PageAdapter.cs
- TypeBuilder.cs
- CleanUpVirtualizedItemEventArgs.cs
- GroupBox.cs
- DBCSCodePageEncoding.cs
- ListView.cs
- MenuItem.cs
- ObjectViewEntityCollectionData.cs
- ItemsControl.cs
- EnumMemberAttribute.cs
- XamlSerializerUtil.cs
- DocumentPageView.cs
- UniqueID.cs
- BindingsCollection.cs
- SecurityException.cs
- AsyncPostBackErrorEventArgs.cs
- SqlWebEventProvider.cs
- ControlPropertyNameConverter.cs
- MenuCommands.cs
- AssociationSetMetadata.cs
- VisualStyleElement.cs
- SqlTypesSchemaImporter.cs
- ProtocolImporter.cs
- CodeDelegateCreateExpression.cs
- ChannelManager.cs
- TextHidden.cs
- HandleInitializationContext.cs
- TypeConverter.cs
- RowUpdatedEventArgs.cs
- BypassElementCollection.cs
- precedingsibling.cs
- AssertSection.cs
- HttpBrowserCapabilitiesWrapper.cs
- TrailingSpaceComparer.cs
- TraceHelpers.cs
- DataServiceOperationContext.cs
- InfoCardKeyedHashAlgorithm.cs
- MailAddressCollection.cs
- GridViewCommandEventArgs.cs
- ListViewVirtualItemsSelectionRangeChangedEvent.cs
- EnterpriseServicesHelper.cs
- InvalidOperationException.cs
- ExceptionUtil.cs
- DataGridCaption.cs
- TreeViewDesigner.cs
- TextEffect.cs
- DBParameter.cs
- VectorCollectionValueSerializer.cs
- Options.cs
- SpeakCompletedEventArgs.cs
- HybridCollection.cs
- SmtpClient.cs