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
- DispatcherHookEventArgs.cs
- DataKeyArray.cs
- ProtocolsConfiguration.cs
- LineSegment.cs
- Int32Converter.cs
- While.cs
- UIElementParagraph.cs
- DeploymentSectionCache.cs
- SqlXml.cs
- GACMembershipCondition.cs
- ReadOnlyCollectionBase.cs
- SafeThreadHandle.cs
- StructuredType.cs
- XmlReturnWriter.cs
- ConsoleKeyInfo.cs
- XmlCDATASection.cs
- HttpStreams.cs
- SocketElement.cs
- SchemaTypeEmitter.cs
- LogArchiveSnapshot.cs
- DocumentGridContextMenu.cs
- AutomationPeer.cs
- WeakReferenceList.cs
- SafeCloseHandleCritical.cs
- DocumentApplicationJournalEntry.cs
- MetaDataInfo.cs
- DataGridColumnHeaderItemAutomationPeer.cs
- SplitContainer.cs
- ToolStripContentPanel.cs
- BaseProcessor.cs
- IUnknownConstantAttribute.cs
- MasterPageCodeDomTreeGenerator.cs
- ItemType.cs
- DragDrop.cs
- GetResponse.cs
- DataContractSerializer.cs
- HttpApplicationFactory.cs
- GenerateScriptTypeAttribute.cs
- FixedSOMSemanticBox.cs
- WorkflowMessageEventHandler.cs
- SqlDataSourceQueryConverter.cs
- SqlDeflator.cs
- WebPartEventArgs.cs
- PixelShader.cs
- DriveInfo.cs
- SecureStringHasher.cs
- ServiceContractViewControl.cs
- MimeBasePart.cs
- HandlerBase.cs
- AxDesigner.cs
- Drawing.cs
- ConsoleTraceListener.cs
- BamlResourceDeserializer.cs
- AsyncOperationContext.cs
- XmlJsonReader.cs
- SettingsPropertyIsReadOnlyException.cs
- CodeTypeReferenceExpression.cs
- Array.cs
- PathFigureCollectionValueSerializer.cs
- __Filters.cs
- ErrorHandlingReceiver.cs
- EventToken.cs
- SmiRecordBuffer.cs
- IntSecurity.cs
- CacheHelper.cs
- ApplicationActivator.cs
- BindingCollection.cs
- WindowsSolidBrush.cs
- Normalizer.cs
- XamlToRtfParser.cs
- TraceLevelStore.cs
- WmlLinkAdapter.cs
- DataContract.cs
- WorkflowRuntimeService.cs
- AppendHelper.cs
- XmlEventCache.cs
- UncommonField.cs
- Enum.cs
- IncrementalHitTester.cs
- TraceHandler.cs
- BamlVersionHeader.cs
- CorrelationManager.cs
- MimePart.cs
- BaseAddressPrefixFilterElementCollection.cs
- OleDbCommandBuilder.cs
- HttpCookiesSection.cs
- Dynamic.cs
- BasicKeyConstraint.cs
- Interlocked.cs
- DefaultParameterValueAttribute.cs
- SymLanguageVendor.cs
- Latin1Encoding.cs
- SerialStream.cs
- ItemContainerGenerator.cs
- ActivityFunc.cs
- TreeNodeConverter.cs
- ServiceEndpoint.cs
- UriExt.cs
- MultiByteCodec.cs
- ComponentDispatcher.cs