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
- CFStream.cs
- XmlCDATASection.cs
- ProxyWebPartManagerDesigner.cs
- NameTable.cs
- OleDbException.cs
- UInt64.cs
- RuntimeResourceSet.cs
- StringWriter.cs
- LocatorPart.cs
- UserPreferenceChangedEventArgs.cs
- ScriptMethodAttribute.cs
- TiffBitmapEncoder.cs
- DoubleCollectionValueSerializer.cs
- DefaultBinder.cs
- RegistrationProxy.cs
- NameValueCache.cs
- ObjectConverter.cs
- StylusPointPropertyInfoDefaults.cs
- Shape.cs
- EntityCommandExecutionException.cs
- NativeActivityTransactionContext.cs
- PrintPreviewGraphics.cs
- WindowsBrush.cs
- baseaxisquery.cs
- XPathExpr.cs
- ExpressionBinding.cs
- ArcSegment.cs
- IIS7UserPrincipal.cs
- WaveHeader.cs
- CombinedGeometry.cs
- RIPEMD160.cs
- ResXResourceReader.cs
- ZoomPercentageConverter.cs
- BitSet.cs
- TextParagraph.cs
- InstancePersistenceCommand.cs
- XmlHierarchicalEnumerable.cs
- ActiveXSite.cs
- EventLogPermissionAttribute.cs
- SurrogateSelector.cs
- DbConnectionInternal.cs
- PropertyEmitter.cs
- ParallelTimeline.cs
- WorkflowWebService.cs
- PersistenceTypeAttribute.cs
- DataPagerCommandEventArgs.cs
- AssemblyBuilderData.cs
- GcSettings.cs
- SafeProcessHandle.cs
- PingOptions.cs
- DirectoryRootQuery.cs
- RijndaelManagedTransform.cs
- SafeNativeMethods.cs
- ResourceDescriptionAttribute.cs
- UpdateException.cs
- CodeAttributeArgument.cs
- MDIControlStrip.cs
- ArgumentOutOfRangeException.cs
- UnsafeNativeMethodsPenimc.cs
- EventLogPermissionEntry.cs
- MouseGestureConverter.cs
- QueueSurrogate.cs
- NavigationHelper.cs
- WhitespaceRule.cs
- XXXOnTypeBuilderInstantiation.cs
- Base64Decoder.cs
- HyperLinkDesigner.cs
- FileLogRecordStream.cs
- JoinElimination.cs
- StdValidatorsAndConverters.cs
- DynamicValueConverter.cs
- DataReaderContainer.cs
- XamlRtfConverter.cs
- Boolean.cs
- PerfService.cs
- GAC.cs
- SequenceNumber.cs
- TextEditorLists.cs
- HtmlGenericControl.cs
- controlskin.cs
- WorkflowMarkupSerializationProvider.cs
- AudioStateChangedEventArgs.cs
- WindowsButton.cs
- MarkupProperty.cs
- TabItemAutomationPeer.cs
- CodeVariableDeclarationStatement.cs
- TdsParserSessionPool.cs
- TabControl.cs
- HandlerElementCollection.cs
- FlowLayoutPanel.cs
- Transform3DGroup.cs
- WizardStepCollectionEditor.cs
- XmlnsDefinitionAttribute.cs
- RootBuilder.cs
- LogLogRecordHeader.cs
- TextCharacters.cs
- BackStopAuthenticationModule.cs
- CompoundFileDeflateTransform.cs
- AuthenticationModuleElement.cs
- SequentialOutput.cs