Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- ColumnReorderedEventArgs.cs
- precedingquery.cs
- AppSettingsExpressionBuilder.cs
- MemberBinding.cs
- KerberosTicketHashIdentifierClause.cs
- TextRunCache.cs
- StackBuilderSink.cs
- UnwrappedTypesXmlSerializerManager.cs
- Utility.cs
- ToolTip.cs
- TransformerConfigurationWizardBase.cs
- Dump.cs
- DtrList.cs
- StylusPointProperty.cs
- GridSplitterAutomationPeer.cs
- AdornedElementPlaceholder.cs
- PropertyRecord.cs
- SqlTrackingQuery.cs
- TextOnlyOutput.cs
- BrowserCapabilitiesFactoryBase.cs
- PermissionRequestEvidence.cs
- DataSetMappper.cs
- AxParameterData.cs
- BinaryParser.cs
- WindowsStatic.cs
- EmptyStringExpandableObjectConverter.cs
- ExpressionBuilder.cs
- ExpressionValueEditor.cs
- KeyToListMap.cs
- ByteStream.cs
- PageCatalogPart.cs
- TraceContextEventArgs.cs
- EastAsianLunisolarCalendar.cs
- SetIterators.cs
- InitialServerConnectionReader.cs
- AssociatedControlConverter.cs
- HttpListenerException.cs
- XamlPoint3DCollectionSerializer.cs
- DescriptionAttribute.cs
- TypeToken.cs
- CodeGotoStatement.cs
- EnumerableRowCollection.cs
- SQLUtility.cs
- TemplatedWizardStep.cs
- ResourceKey.cs
- ConstraintManager.cs
- WebPartDisplayMode.cs
- DataGridViewCellStateChangedEventArgs.cs
- SettingsSavedEventArgs.cs
- SymbolPair.cs
- FormsAuthenticationEventArgs.cs
- PropertyStore.cs
- DateTimeUtil.cs
- RectangleHotSpot.cs
- MimeFormImporter.cs
- WebPartVerb.cs
- __Error.cs
- FastEncoder.cs
- DataGridViewRowConverter.cs
- StylusPlugin.cs
- PageTheme.cs
- StylusPointPropertyInfoDefaults.cs
- PrintEvent.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- SqlNamer.cs
- OleDbEnumerator.cs
- StringConverter.cs
- InvalidCastException.cs
- View.cs
- FixedBufferAttribute.cs
- InvalidPrinterException.cs
- SiteMapNode.cs
- BitmapSource.cs
- TimelineGroup.cs
- DirectoryNotFoundException.cs
- ArithmeticException.cs
- ToolStripLabel.cs
- BreakRecordTable.cs
- PseudoWebRequest.cs
- PersonalizationStateInfoCollection.cs
- LinqDataView.cs
- JsonMessageEncoderFactory.cs
- AttachmentCollection.cs
- Button.cs
- SqlBulkCopyColumnMapping.cs
- HtmlTableCell.cs
- DbProviderConfigurationHandler.cs
- SerializationSectionGroup.cs
- RtfToXamlLexer.cs
- Frame.cs
- WebException.cs
- RemoteWebConfigurationHostStream.cs
- PrintControllerWithStatusDialog.cs
- ValidationResult.cs
- ObjectSelectorEditor.cs
- ComboBox.cs
- ShaperBuffers.cs
- WebPartVerbCollection.cs
- HttpModulesSection.cs
- NativeCppClassAttribute.cs