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
- RelatedView.cs
- DocumentSchemaValidator.cs
- Camera.cs
- ObfuscationAttribute.cs
- XmlNavigatorStack.cs
- EditingMode.cs
- WebWorkflowRole.cs
- CodeAttributeDeclaration.cs
- keycontainerpermission.cs
- FileInfo.cs
- SemanticAnalyzer.cs
- CompressedStack.cs
- Nullable.cs
- _CacheStreams.cs
- CompositeControl.cs
- CapiSafeHandles.cs
- RepeaterItemEventArgs.cs
- RunInstallerAttribute.cs
- EditCommandColumn.cs
- EntitySetDataBindingList.cs
- ServiceReference.cs
- DescendantQuery.cs
- ReachPrintTicketSerializer.cs
- PageThemeCodeDomTreeGenerator.cs
- AsyncOperation.cs
- XmlDataSource.cs
- XsdBuildProvider.cs
- FormatVersion.cs
- CompositeControl.cs
- Span.cs
- SmiRecordBuffer.cs
- AppDomainAttributes.cs
- IdnMapping.cs
- CheckBox.cs
- AddressHeaderCollectionElement.cs
- LinqToSqlWrapper.cs
- Ref.cs
- UIElement3DAutomationPeer.cs
- ZipIOExtraFieldZip64Element.cs
- ToolboxItemCollection.cs
- ButtonAutomationPeer.cs
- XPathBinder.cs
- HttpListener.cs
- ItemDragEvent.cs
- DocumentScope.cs
- XpsS0ValidatingLoader.cs
- ToolStripItemTextRenderEventArgs.cs
- SqlDataSourceConfigureFilterForm.cs
- DbMetaDataCollectionNames.cs
- TrustSection.cs
- Label.cs
- ProjectionNode.cs
- MetadataCacheItem.cs
- EntityDataSourceSelectedEventArgs.cs
- ClientOptions.cs
- TreeNode.cs
- GeneralTransform3DGroup.cs
- ToolBarButton.cs
- TextControl.cs
- WebReferencesBuildProvider.cs
- DataViewManager.cs
- VerificationAttribute.cs
- EncryptedReference.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- XsltSettings.cs
- UIntPtr.cs
- RetrieveVirtualItemEventArgs.cs
- MenuScrollingVisibilityConverter.cs
- CryptoApi.cs
- XmlNodeReader.cs
- dbdatarecord.cs
- ResourceDictionaryCollection.cs
- SizeChangedInfo.cs
- ShaperBuffers.cs
- DataObject.cs
- MimeTypeMapper.cs
- ListViewGroupCollectionEditor.cs
- CharacterShapingProperties.cs
- WindowsMenu.cs
- SrgsDocument.cs
- DataDocumentXPathNavigator.cs
- WinCategoryAttribute.cs
- ToolStripButton.cs
- ControlEvent.cs
- PingReply.cs
- Base64Stream.cs
- StandardToolWindows.cs
- PreloadHost.cs
- ToolStripSplitButton.cs
- TextTreeFixupNode.cs
- GeneralTransform3DGroup.cs
- TabControlCancelEvent.cs
- WebFormsRootDesigner.cs
- ping.cs
- HTMLTagNameToTypeMapper.cs
- CssStyleCollection.cs
- InternalCompensate.cs
- SqlClientWrapperSmiStreamChars.cs
- SessionStateUtil.cs
- FixedTextSelectionProcessor.cs