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
- mediaeventargs.cs
- EntityConnectionStringBuilder.cs
- WebPartZone.cs
- EntityDataSourceState.cs
- QilName.cs
- CalendarDay.cs
- IPHostEntry.cs
- FacetValues.cs
- TemplateKeyConverter.cs
- ListView.cs
- CheckBoxAutomationPeer.cs
- Timeline.cs
- wgx_render.cs
- XDeferredAxisSource.cs
- ElementFactory.cs
- DataServiceBuildProvider.cs
- RequestCache.cs
- ValueQuery.cs
- PropertyGridCommands.cs
- Lease.cs
- StartUpEventArgs.cs
- TagNameToTypeMapper.cs
- infer.cs
- SqlCharStream.cs
- MethodCallConverter.cs
- FixedTextView.cs
- MetadataUtil.cs
- XmlAnyAttributeAttribute.cs
- VersionedStreamOwner.cs
- XmlComment.cs
- RegexCode.cs
- DockAndAnchorLayout.cs
- TextMetrics.cs
- OleAutBinder.cs
- AnimationLayer.cs
- SchemaImporterExtensionElementCollection.cs
- FamilyMap.cs
- UseLicense.cs
- DataGridViewCellValueEventArgs.cs
- ExceptionAggregator.cs
- PenContext.cs
- DrawItemEvent.cs
- DataGridViewTextBoxColumn.cs
- WmlFormAdapter.cs
- Bidi.cs
- ConfigurationPropertyAttribute.cs
- TransformValueSerializer.cs
- ToolStripGripRenderEventArgs.cs
- newitemfactory.cs
- ClusterSafeNativeMethods.cs
- DeploymentSection.cs
- MD5CryptoServiceProvider.cs
- SafeArrayRankMismatchException.cs
- InstanceCreationEditor.cs
- InvokeWebServiceDesigner.cs
- TypeInformation.cs
- unsafeIndexingFilterStream.cs
- SafeSystemMetrics.cs
- AudioException.cs
- DocumentOrderComparer.cs
- AppDomainShutdownMonitor.cs
- MessageAction.cs
- ConsoleKeyInfo.cs
- AttachedAnnotation.cs
- PropertyPath.cs
- HtmlContainerControl.cs
- XPathNode.cs
- StringPropertyBuilder.cs
- ThousandthOfEmRealDoubles.cs
- BroadcastEventHelper.cs
- HierarchicalDataTemplate.cs
- CodeMemberProperty.cs
- SqlInternalConnectionSmi.cs
- EmptyStringExpandableObjectConverter.cs
- WindowsGraphics.cs
- AddInDeploymentState.cs
- XmlSerializerOperationBehavior.cs
- AttributeQuery.cs
- MdiWindowListStrip.cs
- RelationshipEndCollection.cs
- ExceptionUtil.cs
- ValidationErrorInfo.cs
- UIntPtr.cs
- MessageQueuePermission.cs
- RemotingSurrogateSelector.cs
- DataGridViewButtonColumn.cs
- RbTree.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- UInt32Storage.cs
- ColorConvertedBitmapExtension.cs
- ToolStripSeparatorRenderEventArgs.cs
- GuidTagList.cs
- TraversalRequest.cs
- URI.cs
- AttributeEmitter.cs
- ImageAutomationPeer.cs
- BindingGroup.cs
- WorkflowDefinitionDispenser.cs
- XPathDocument.cs
- ImagingCache.cs