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
- MimeMapping.cs
- TileModeValidation.cs
- LayoutEvent.cs
- ComboBoxHelper.cs
- MdiWindowListStrip.cs
- StringToken.cs
- MetadataElement.cs
- EntityDataSourceDataSelection.cs
- PropertyValidationContext.cs
- CqlIdentifiers.cs
- WebBrowser.cs
- MediaElementAutomationPeer.cs
- VirtualDirectoryMapping.cs
- Context.cs
- RegexCompiler.cs
- ReferencedAssembly.cs
- XmlCDATASection.cs
- IISMapPath.cs
- ButtonBaseAutomationPeer.cs
- Vertex.cs
- NegotiationTokenAuthenticatorStateCache.cs
- DataGrid.cs
- TableItemPattern.cs
- TemplateBindingExpressionConverter.cs
- PluralizationServiceUtil.cs
- Font.cs
- QilCloneVisitor.cs
- CodeObjectCreateExpression.cs
- CodeChecksumPragma.cs
- LocalizationCodeDomSerializer.cs
- InsufficientMemoryException.cs
- WebFormDesignerActionService.cs
- DynamicILGenerator.cs
- TextEditorSpelling.cs
- Int32RectValueSerializer.cs
- basevalidator.cs
- AssertFilter.cs
- PenThread.cs
- GridViewPageEventArgs.cs
- ValidationEventArgs.cs
- DbMetaDataColumnNames.cs
- SliderAutomationPeer.cs
- BaseComponentEditor.cs
- ConfigurationValue.cs
- CacheForPrimitiveTypes.cs
- MailHeaderInfo.cs
- Membership.cs
- SystemDiagnosticsSection.cs
- CorrelationQuery.cs
- UIInitializationException.cs
- EntitySqlQueryCacheKey.cs
- HMACSHA384.cs
- HtmlControl.cs
- FilterException.cs
- HostSecurityManager.cs
- XmlWrappingReader.cs
- PersonalizationStateQuery.cs
- wgx_sdk_version.cs
- EventLogPermission.cs
- AutomationFocusChangedEventArgs.cs
- Bold.cs
- CodeObject.cs
- ISO2022Encoding.cs
- Page.cs
- DataBindingList.cs
- SecureStringHasher.cs
- DataRowExtensions.cs
- AdapterSwitches.cs
- SecurityToken.cs
- ResourcePermissionBaseEntry.cs
- DataSet.cs
- UnknownBitmapDecoder.cs
- SqlTriggerContext.cs
- HostingEnvironmentException.cs
- Type.cs
- DeviceSpecificChoiceCollection.cs
- EntityWithKeyStrategy.cs
- Convert.cs
- HtmlGenericControl.cs
- RuntimeConfigLKG.cs
- SchemaTableOptionalColumn.cs
- ScrollItemPatternIdentifiers.cs
- Scripts.cs
- EventSinkHelperWriter.cs
- ResourceSet.cs
- LineMetrics.cs
- RegexCompilationInfo.cs
- PropertyStore.cs
- CancellationHandlerDesigner.cs
- WebPartTransformerCollection.cs
- XmlMapping.cs
- AssertHelper.cs
- TreeNodeStyleCollectionEditor.cs
- MaskedTextBoxDesignerActionList.cs
- XmlAttributeAttribute.cs
- RegexStringValidatorAttribute.cs
- TextStore.cs
- CodeArgumentReferenceExpression.cs
- EUCJPEncoding.cs
- _NegoStream.cs