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
- SurrogateDataContract.cs
- QuaternionRotation3D.cs
- TemplatePartAttribute.cs
- WebPartHeaderCloseVerb.cs
- XPathBinder.cs
- XhtmlConformanceSection.cs
- XamlWriter.cs
- EntityCommandDefinition.cs
- PageCodeDomTreeGenerator.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- ParserStack.cs
- PolicyLevel.cs
- _OSSOCK.cs
- PenThread.cs
- MissingMethodException.cs
- ValidationEventArgs.cs
- ByteStack.cs
- CompoundFileDeflateTransform.cs
- SessionStateModule.cs
- CalculatedColumn.cs
- DataServiceExpressionVisitor.cs
- LayoutManager.cs
- ValidationEventArgs.cs
- AttachedAnnotation.cs
- Int32Rect.cs
- DataControlLinkButton.cs
- SchemaSetCompiler.cs
- BooleanExpr.cs
- ImageConverter.cs
- ColorMap.cs
- DataBindingsDialog.cs
- safex509handles.cs
- StandardBindingCollectionElement.cs
- WindowsStatusBar.cs
- _SSPISessionCache.cs
- MouseActionValueSerializer.cs
- Serializer.cs
- DesignTable.cs
- FastEncoder.cs
- InitiatorServiceModelSecurityTokenRequirement.cs
- NamespaceQuery.cs
- WebPartHeaderCloseVerb.cs
- GeometryCollection.cs
- DbDeleteCommandTree.cs
- VarInfo.cs
- XmlResolver.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- DirectoryNotFoundException.cs
- ScrollItemPattern.cs
- CreatingCookieEventArgs.cs
- HttpListenerException.cs
- CodeAttachEventStatement.cs
- DataGridTemplateColumn.cs
- SimplePropertyEntry.cs
- BinHexEncoder.cs
- WebPartConnection.cs
- DiagnosticStrings.cs
- BulletChrome.cs
- FixedHighlight.cs
- XmlNotation.cs
- ScalarOps.cs
- FormViewRow.cs
- PolyBezierSegment.cs
- OverrideMode.cs
- HtmlFormWrapper.cs
- ThousandthOfEmRealPoints.cs
- ProcessModelInfo.cs
- Point4D.cs
- ReturnType.cs
- XmlDataSourceNodeDescriptor.cs
- DependencyPropertyConverter.cs
- _ShellExpression.cs
- ParagraphResult.cs
- ImageIndexEditor.cs
- KeyBinding.cs
- Int16KeyFrameCollection.cs
- ObjectDataSource.cs
- IntegrationExceptionEventArgs.cs
- WindowsGrip.cs
- DeclaredTypeValidator.cs
- XsdBuilder.cs
- Adorner.cs
- GridErrorDlg.cs
- XamlBrushSerializer.cs
- HtmlFormAdapter.cs
- WebPartCatalogAddVerb.cs
- PresentationSource.cs
- VerificationException.cs
- StringBuilder.cs
- InvalidCommandTreeException.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- SortedList.cs
- RijndaelCryptoServiceProvider.cs
- Light.cs
- CriticalFinalizerObject.cs
- XmlSchemaParticle.cs
- StorageInfo.cs
- UpdateException.cs
- AdapterDictionary.cs
- Reference.cs