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
- Rectangle.cs
- DecimalConstantAttribute.cs
- DataGridSortCommandEventArgs.cs
- AudioFormatConverter.cs
- RtType.cs
- EventBuilder.cs
- ServiceBehaviorElementCollection.cs
- DataServiceProcessingPipeline.cs
- Documentation.cs
- XamlFilter.cs
- SparseMemoryStream.cs
- Assembly.cs
- LocalBuilder.cs
- PrefixQName.cs
- Vars.cs
- SimpleHandlerBuildProvider.cs
- GB18030Encoding.cs
- MergeExecutor.cs
- assertwrapper.cs
- CodeLabeledStatement.cs
- Convert.cs
- CharAnimationUsingKeyFrames.cs
- PriorityRange.cs
- SecurityPermission.cs
- TabItemWrapperAutomationPeer.cs
- GeometryHitTestParameters.cs
- SByteConverter.cs
- TimeSpan.cs
- ComponentCollection.cs
- LinkUtilities.cs
- Document.cs
- AtomParser.cs
- ToolboxItemAttribute.cs
- BamlLocalizableResource.cs
- GeometryValueSerializer.cs
- StaticExtension.cs
- ExtensionWindowHeader.cs
- DataGridViewCellMouseEventArgs.cs
- WindowsListViewGroup.cs
- Zone.cs
- RunInstallerAttribute.cs
- NamespaceImport.cs
- DependencyPropertyHelper.cs
- SBCSCodePageEncoding.cs
- FlowDocumentPage.cs
- SoapCodeExporter.cs
- DataPointer.cs
- JsonWriter.cs
- MenuCommands.cs
- OneOfScalarConst.cs
- BaseContextMenu.cs
- FtpCachePolicyElement.cs
- TdsEnums.cs
- CellIdBoolean.cs
- StatusBar.cs
- TransactionScope.cs
- OpenTypeCommon.cs
- XmlSerializerVersionAttribute.cs
- SoapElementAttribute.cs
- LayoutInformation.cs
- Events.cs
- ConnectionStringsSection.cs
- SimpleHandlerFactory.cs
- RegexNode.cs
- FullTextBreakpoint.cs
- TypeToken.cs
- Membership.cs
- StrongNameUtility.cs
- SafeNativeMemoryHandle.cs
- SizeF.cs
- NameValueFileSectionHandler.cs
- ResolveNameEventArgs.cs
- IItemProperties.cs
- XappLauncher.cs
- DrawingImage.cs
- _TLSstream.cs
- FixedTextBuilder.cs
- AQNBuilder.cs
- RequestResizeEvent.cs
- NativeMethods.cs
- ParallelLoopState.cs
- RestClientProxyHandler.cs
- SqlTypesSchemaImporter.cs
- UserPreferenceChangingEventArgs.cs
- RoleService.cs
- SpecialNameAttribute.cs
- BaseCodePageEncoding.cs
- DataGridViewColumnHeaderCell.cs
- DisplayNameAttribute.cs
- HtmlAnchor.cs
- ComContractElementCollection.cs
- SqlDataSourceEnumerator.cs
- MediaSystem.cs
- CalendarKeyboardHelper.cs
- MembershipUser.cs
- WaitHandleCannotBeOpenedException.cs
- ObfuscateAssemblyAttribute.cs
- OdbcFactory.cs
- ListControlConvertEventArgs.cs
- DataGridParentRows.cs