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
- CharacterBuffer.cs
- WebPermission.cs
- StringExpressionSet.cs
- GregorianCalendarHelper.cs
- ReturnType.cs
- HtmlInputControl.cs
- ToolStripSettings.cs
- DataGridViewSortCompareEventArgs.cs
- DataGridViewCellCollection.cs
- GridItemPatternIdentifiers.cs
- Expression.cs
- GroupBoxAutomationPeer.cs
- LoginName.cs
- DataTablePropertyDescriptor.cs
- TTSEvent.cs
- EventManager.cs
- ZipIOLocalFileBlock.cs
- ExpanderAutomationPeer.cs
- FormViewModeEventArgs.cs
- DBConnectionString.cs
- SettingsBindableAttribute.cs
- AutomationIdentifier.cs
- RowBinding.cs
- EntityClassGenerator.cs
- Transactions.cs
- PipelineModuleStepContainer.cs
- _RequestLifetimeSetter.cs
- AggregateNode.cs
- WebPartManager.cs
- Range.cs
- smtppermission.cs
- XmlSchemaComplexType.cs
- DiagnosticTrace.cs
- Models.cs
- MethodSet.cs
- PreProcessor.cs
- DataReceivedEventArgs.cs
- PeerCollaborationPermission.cs
- StateMachineExecutionState.cs
- MostlySingletonList.cs
- _CacheStreams.cs
- FixedStringLookup.cs
- X509CertificateChain.cs
- BrowserCapabilitiesCodeGenerator.cs
- RawKeyboardInputReport.cs
- DataGridViewImageCell.cs
- DesignerFrame.cs
- HtmlInputHidden.cs
- GCHandleCookieTable.cs
- DataView.cs
- PrincipalPermission.cs
- StateManagedCollection.cs
- NumericPagerField.cs
- WindowsFormsSectionHandler.cs
- WindowsToolbarAsMenu.cs
- SecurityTokenValidationException.cs
- ExpressionBindingCollection.cs
- SharedPersonalizationStateInfo.cs
- MediaContext.cs
- MouseActionValueSerializer.cs
- GeneralTransform3D.cs
- ConfigurationValidatorAttribute.cs
- TdsParser.cs
- SafeRightsManagementHandle.cs
- ExpressionHelper.cs
- TextParaClient.cs
- EditingCoordinator.cs
- XmlReflectionMember.cs
- DateTimeValueSerializerContext.cs
- HashAlgorithm.cs
- UIElement3D.cs
- SymmetricCryptoHandle.cs
- TraceSection.cs
- WsdlBuildProvider.cs
- FormViewDeletedEventArgs.cs
- PagePropertiesChangingEventArgs.cs
- IsolatedStorageException.cs
- WebDisplayNameAttribute.cs
- TableChangeProcessor.cs
- OutputCacheSection.cs
- ScriptIgnoreAttribute.cs
- RectangleGeometry.cs
- SharedTcpTransportManager.cs
- EmptyEnumerator.cs
- ActivityDelegate.cs
- TemplateBamlTreeBuilder.cs
- NotCondition.cs
- FileLevelControlBuilderAttribute.cs
- StateDesigner.CommentLayoutGlyph.cs
- AliasedExpr.cs
- HMACSHA1.cs
- COM2ExtendedBrowsingHandler.cs
- ScriptResourceHandler.cs
- ViewValidator.cs
- AVElementHelper.cs
- ConnectionsZone.cs
- SocketInformation.cs
- GcSettings.cs
- OleDbEnumerator.cs
- Resources.Designer.cs