Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / MoveSizeWinEventHandler.cs / 1305600 / 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
- StringValueSerializer.cs
- TogglePattern.cs
- NativeCompoundFileAPIs.cs
- CodeStatement.cs
- TextEditorContextMenu.cs
- ProcessModelInfo.cs
- SqlDataSourceView.cs
- Rotation3DAnimationUsingKeyFrames.cs
- Mouse.cs
- CheckBox.cs
- InputScopeAttribute.cs
- Viewport3DVisual.cs
- QueryStringParameter.cs
- RenderingEventArgs.cs
- WebMethodAttribute.cs
- RoutedEventArgs.cs
- StateItem.cs
- SqlDataRecord.cs
- Compiler.cs
- TableItemProviderWrapper.cs
- ObjectDataSourceMethodEventArgs.cs
- QueueProcessor.cs
- DiscoveryInnerClientAdhocCD1.cs
- ACL.cs
- GenericWebPart.cs
- SystemIPv4InterfaceProperties.cs
- SqlTopReducer.cs
- RightsDocument.cs
- MetadataElement.cs
- DataRowCollection.cs
- ConfigsHelper.cs
- GenericRootAutomationPeer.cs
- Rfc2898DeriveBytes.cs
- ErrorWrapper.cs
- RightsManagementEncryptionTransform.cs
- SHA384Managed.cs
- UrlEncodedParameterWriter.cs
- ImageEditor.cs
- TimeStampChecker.cs
- DataGridAddNewRow.cs
- AnimationClock.cs
- NullableDoubleAverageAggregationOperator.cs
- TextTreeDeleteContentUndoUnit.cs
- ToolStripPanelRow.cs
- BamlLocalizer.cs
- ItemList.cs
- CodeSnippetTypeMember.cs
- InputEventArgs.cs
- CounterCreationData.cs
- _StreamFramer.cs
- SEHException.cs
- TagPrefixInfo.cs
- BindingOperations.cs
- XmlSchemaImporter.cs
- BamlReader.cs
- RefExpr.cs
- MULTI_QI.cs
- AtomMaterializerLog.cs
- Binding.cs
- ConfigXmlComment.cs
- RecordsAffectedEventArgs.cs
- ConnectionStringSettings.cs
- HttpProcessUtility.cs
- NamedPermissionSet.cs
- ViewCellRelation.cs
- QueueProcessor.cs
- AnnotationObservableCollection.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- XamlToRtfParser.cs
- XmlException.cs
- ToolStripContextMenu.cs
- FieldValue.cs
- SettingsPropertyWrongTypeException.cs
- PrivacyNoticeBindingElement.cs
- QuaternionAnimationUsingKeyFrames.cs
- DataTemplate.cs
- CountdownEvent.cs
- StringAnimationUsingKeyFrames.cs
- RSACryptoServiceProvider.cs
- OdbcCommand.cs
- ElementProxy.cs
- OleAutBinder.cs
- ListViewSortEventArgs.cs
- EntryWrittenEventArgs.cs
- comcontractssection.cs
- SqlStatistics.cs
- IgnoreFileBuildProvider.cs
- cookie.cs
- SortedDictionary.cs
- CodeTypeOfExpression.cs
- ValueUtilsSmi.cs
- MenuItemCollection.cs
- HttpRuntime.cs
- Polygon.cs
- SectionRecord.cs
- XamlNamespaceHelper.cs
- WpfXamlMember.cs
- ProxyDataContractResolver.cs
- Splitter.cs
- HttpListenerContext.cs