Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- LedgerEntry.cs
- unsafenativemethodsother.cs
- XmlSchemaSet.cs
- SortDescriptionCollection.cs
- HtmlShimManager.cs
- WorkflowControlEndpoint.cs
- DocumentPageTextView.cs
- METAHEADER.cs
- AspProxy.cs
- SerializerProvider.cs
- EdmTypeAttribute.cs
- MetafileHeaderWmf.cs
- StyleSheet.cs
- ActivationProxy.cs
- Module.cs
- SynchronizationContext.cs
- ResourceSetExpression.cs
- EndOfStreamException.cs
- UnsafeNativeMethods.cs
- FileVersionInfo.cs
- HtmlUtf8RawTextWriter.cs
- TypeForwardedToAttribute.cs
- WindowsStatusBar.cs
- WindowsAuthenticationEventArgs.cs
- FormsAuthenticationConfiguration.cs
- IdentityReference.cs
- xml.cs
- RichTextBox.cs
- DateBoldEvent.cs
- ListViewDataItem.cs
- XhtmlBasicLiteralTextAdapter.cs
- RequestCacheEntry.cs
- InvokeGenerator.cs
- CodeTypeDeclaration.cs
- FrameworkTemplate.cs
- CodeParameterDeclarationExpressionCollection.cs
- Operator.cs
- FileVersion.cs
- BorderSidesEditor.cs
- SqlTriggerContext.cs
- HttpDigestClientElement.cs
- InheritanceContextHelper.cs
- PropertyValueUIItem.cs
- DeviceOverridableAttribute.cs
- CustomValidator.cs
- CommandDevice.cs
- HtmlLiteralTextAdapter.cs
- LinearKeyFrames.cs
- ScriptingProfileServiceSection.cs
- GridViewColumnCollection.cs
- SmtpException.cs
- TextBoxAutomationPeer.cs
- UrlMappingCollection.cs
- MailWebEventProvider.cs
- PackageDigitalSignature.cs
- SemaphoreFullException.cs
- EventLogInternal.cs
- RepeaterItemEventArgs.cs
- DispatchProxy.cs
- ProfileBuildProvider.cs
- WebPartManager.cs
- ResourceKey.cs
- ScriptingProfileServiceSection.cs
- FixedSOMPageConstructor.cs
- ASCIIEncoding.cs
- ServiceDiscoveryElement.cs
- Attachment.cs
- NamedObject.cs
- TreeNodeSelectionProcessor.cs
- StylusPointProperties.cs
- WebBrowserDocumentCompletedEventHandler.cs
- CompoundFileStreamReference.cs
- EnumerableRowCollectionExtensions.cs
- StateManagedCollection.cs
- invalidudtexception.cs
- MenuCommands.cs
- ISAPIRuntime.cs
- QuaternionRotation3D.cs
- HttpServerVarsCollection.cs
- SettingsPropertyIsReadOnlyException.cs
- filewebresponse.cs
- DocumentSequence.cs
- StylusOverProperty.cs
- SignerInfo.cs
- ListenerAdapter.cs
- ListViewItem.cs
- WeakReferenceList.cs
- MinimizableAttributeTypeConverter.cs
- RepeaterDesigner.cs
- ThreadPoolTaskScheduler.cs
- Int64AnimationBase.cs
- SqlCacheDependencyDatabase.cs
- OleAutBinder.cs
- GeometryCombineModeValidation.cs
- WebBaseEventKeyComparer.cs
- SqlDataSourceCommandEventArgs.cs
- WindowsAltTab.cs
- XmlDataSource.cs
- ApplicationContext.cs
- COM2PropertyDescriptor.cs