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
- DictionaryBase.cs
- DllNotFoundException.cs
- TableRowCollection.cs
- ClientConfigurationHost.cs
- DataService.cs
- ToolStripItemGlyph.cs
- WebRequestModulesSection.cs
- Model3DGroup.cs
- ProxyManager.cs
- RtType.cs
- SmtpFailedRecipientsException.cs
- CharConverter.cs
- SyndicationDeserializer.cs
- CodeCommentStatementCollection.cs
- QueryTask.cs
- CommonDialog.cs
- InputLanguage.cs
- SqlUserDefinedAggregateAttribute.cs
- SoapIncludeAttribute.cs
- EntityDataSourceUtil.cs
- LinearKeyFrames.cs
- TableLayoutSettingsTypeConverter.cs
- HTMLTextWriter.cs
- Soap.cs
- CqlQuery.cs
- CdpEqualityComparer.cs
- FocusTracker.cs
- XXXOnTypeBuilderInstantiation.cs
- BooleanExpr.cs
- Screen.cs
- QueryableDataSourceView.cs
- DetailsViewCommandEventArgs.cs
- SmtpLoginAuthenticationModule.cs
- IdentifierCollection.cs
- Int32.cs
- IdnElement.cs
- Vector3DConverter.cs
- ProfileService.cs
- TemplateBindingExpression.cs
- ObfuscateAssemblyAttribute.cs
- OracleException.cs
- TableLayoutStyleCollection.cs
- Variant.cs
- ISAPIWorkerRequest.cs
- BindingUtils.cs
- ServiceDeploymentInfo.cs
- Int64AnimationUsingKeyFrames.cs
- XmlSchemaAttribute.cs
- ISessionStateStore.cs
- CodeAccessPermission.cs
- Aggregates.cs
- ConvertersCollection.cs
- TransmissionStrategy.cs
- HtmlInputButton.cs
- DataPager.cs
- DropShadowBitmapEffect.cs
- Rules.cs
- ObjectQueryExecutionPlan.cs
- GPPOINT.cs
- SHA1CryptoServiceProvider.cs
- FormsIdentity.cs
- QuaternionIndependentAnimationStorage.cs
- CharEnumerator.cs
- UnsafeNativeMethods.cs
- ContainerParagraph.cs
- TextEvent.cs
- Assert.cs
- ClientOptions.cs
- DiscreteKeyFrames.cs
- DataGridRowHeaderAutomationPeer.cs
- Single.cs
- GradientStopCollection.cs
- TraceFilter.cs
- ExpressionCopier.cs
- MatchAttribute.cs
- SafeBitVector32.cs
- FigureParaClient.cs
- Logging.cs
- DataPointer.cs
- CompiledQuery.cs
- DuplicateDetector.cs
- BuildResultCache.cs
- MiniAssembly.cs
- ByteStreamMessageEncodingElement.cs
- ObjectCacheHost.cs
- GenericEnumerator.cs
- TextAction.cs
- Rule.cs
- NamespaceList.cs
- DataMember.cs
- FieldTemplateFactory.cs
- safex509handles.cs
- SecurityException.cs
- CacheChildrenQuery.cs
- XmlMembersMapping.cs
- PropertyCondition.cs
- StreamWriter.cs
- TemplateManager.cs
- EditableRegion.cs
- LinqDataSourceValidationException.cs