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
- MimePart.cs
- RtfControlWordInfo.cs
- TreeNodeClickEventArgs.cs
- ErrorLog.cs
- Annotation.cs
- AliasedExpr.cs
- CircleHotSpot.cs
- LongTypeConverter.cs
- WebProxyScriptElement.cs
- TableLayoutSettingsTypeConverter.cs
- BitmapEffectInput.cs
- OperatingSystem.cs
- ConfigurationElement.cs
- LocationSectionRecord.cs
- ElapsedEventArgs.cs
- TargetConverter.cs
- NetworkCredential.cs
- SystemDiagnosticsSection.cs
- AccessKeyManager.cs
- ContextProperty.cs
- DeobfuscatingStream.cs
- ThaiBuddhistCalendar.cs
- TextBox.cs
- Funcletizer.cs
- EventLogConfiguration.cs
- CreateUserWizard.cs
- ListMarkerLine.cs
- PersistenceProviderElement.cs
- Win32MouseDevice.cs
- RadioButtonBaseAdapter.cs
- EntityCommandExecutionException.cs
- ToolStripDropDownClosedEventArgs.cs
- Matrix3DStack.cs
- ActiveDocumentEvent.cs
- ObjectViewListener.cs
- TimeZoneNotFoundException.cs
- SQLString.cs
- RootBrowserWindowProxy.cs
- documentsequencetextview.cs
- TogglePattern.cs
- ApplicationBuildProvider.cs
- PointConverter.cs
- Maps.cs
- FileUtil.cs
- OLEDB_Enum.cs
- BypassElement.cs
- ParseChildrenAsPropertiesAttribute.cs
- DiscriminatorMap.cs
- FreezableDefaultValueFactory.cs
- ParallelDesigner.cs
- SourceFileBuildProvider.cs
- WebScriptServiceHostFactory.cs
- AnnotationObservableCollection.cs
- WindowsGraphicsWrapper.cs
- CommandConverter.cs
- BitmapPalettes.cs
- ContentFilePart.cs
- FontFamily.cs
- ScrollViewer.cs
- SpellerError.cs
- ToolStripItemTextRenderEventArgs.cs
- DeviceContexts.cs
- storepermission.cs
- UnsafeNativeMethods.cs
- SamlEvidence.cs
- WindowsFormsHelpers.cs
- XPathMessageContext.cs
- MDIWindowDialog.cs
- ImageAttributes.cs
- SelectionItemProviderWrapper.cs
- InvalidDataException.cs
- BinaryParser.cs
- ClrProviderManifest.cs
- DrawTreeNodeEventArgs.cs
- RegexMatchCollection.cs
- SecurityUniqueId.cs
- DebugView.cs
- ResXResourceSet.cs
- XmlBinaryWriterSession.cs
- DataGridViewCellEventArgs.cs
- PathData.cs
- Model3D.cs
- AutomationEvent.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- VerificationException.cs
- AmbientProperties.cs
- WebException.cs
- GrabHandleGlyph.cs
- PrintDocument.cs
- elementinformation.cs
- TypeGeneratedEventArgs.cs
- OciLobLocator.cs
- HTMLTagNameToTypeMapper.cs
- WebPartEventArgs.cs
- AspNetCacheProfileAttribute.cs
- IndependentlyAnimatedPropertyMetadata.cs
- ActivityStatusChangeEventArgs.cs
- DependentList.cs
- SchemaInfo.cs
- OdbcConnectionFactory.cs