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
- RowSpanVector.cs
- ProcessProtocolHandler.cs
- x509store.cs
- DeferredElementTreeState.cs
- EventToken.cs
- DataGridHeaderBorder.cs
- ProxyWebPartConnectionCollection.cs
- FilteredDataSetHelper.cs
- brushes.cs
- DesignRelationCollection.cs
- LongCountAggregationOperator.cs
- Descriptor.cs
- MultipartContentParser.cs
- ParseChildrenAsPropertiesAttribute.cs
- InputLanguageSource.cs
- Button.cs
- LinearKeyFrames.cs
- UrlPropertyAttribute.cs
- WebPartEditVerb.cs
- XmlLanguage.cs
- UserControlDesigner.cs
- Control.cs
- BlockUIContainer.cs
- WebControl.cs
- DefaultDiscoveryServiceExtension.cs
- PolicyUnit.cs
- CapabilitiesAssignment.cs
- DataRecordInfo.cs
- ConfigurationValue.cs
- Hex.cs
- SecUtil.cs
- Opcode.cs
- OleDbPermission.cs
- XslCompiledTransform.cs
- TdsParser.cs
- DbgUtil.cs
- ConfigurationValidatorAttribute.cs
- RawStylusSystemGestureInputReport.cs
- Tablet.cs
- XPathParser.cs
- SchemaExporter.cs
- EndpointConfigContainer.cs
- StoragePropertyMapping.cs
- TransactionTable.cs
- MediaPlayerState.cs
- ErrorFormatterPage.cs
- TextTreeTextElementNode.cs
- DataGridViewRowsAddedEventArgs.cs
- QilVisitor.cs
- CodeGroup.cs
- RegexCapture.cs
- DBSchemaRow.cs
- CharStorage.cs
- ParameterCollectionEditorForm.cs
- BulletedListEventArgs.cs
- NameValueCollection.cs
- MetadataItemEmitter.cs
- CategoryEditor.cs
- DeclarationUpdate.cs
- LoginView.cs
- ZipIOModeEnforcingStream.cs
- ContentPresenter.cs
- MessageQueuePermissionEntry.cs
- TreeNodeBindingDepthConverter.cs
- ObjectSecurity.cs
- Image.cs
- IgnoreSectionHandler.cs
- ApplicationId.cs
- GlobalAclOperationRequirement.cs
- SizeLimitedCache.cs
- ListViewDeletedEventArgs.cs
- DataGridViewRowsRemovedEventArgs.cs
- DbUpdateCommandTree.cs
- MessageBox.cs
- ZipIOCentralDirectoryFileHeader.cs
- WindowsToolbarItemAsMenuItem.cs
- DbModificationCommandTree.cs
- ClientData.cs
- WebPartEditorOkVerb.cs
- SortableBindingList.cs
- SQlBooleanStorage.cs
- KeyPressEvent.cs
- LineProperties.cs
- XmlAttribute.cs
- HWStack.cs
- IsolatedStorageException.cs
- SoapIncludeAttribute.cs
- clipboard.cs
- EncoderBestFitFallback.cs
- SelectingProviderEventArgs.cs
- TemplatedControlDesigner.cs
- PageThemeBuildProvider.cs
- ToolboxItem.cs
- TypeName.cs
- SchemaCollectionPreprocessor.cs
- WebControlParameterProxy.cs
- printdlgexmarshaler.cs
- RichTextBox.cs
- AnnotationResourceCollection.cs
- LoadRetryStrategyFactory.cs