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
- SingleSelectRootGridEntry.cs
- AudioFormatConverter.cs
- ListViewItemSelectionChangedEvent.cs
- ModelUIElement3D.cs
- CharacterBufferReference.cs
- URLString.cs
- FloatMinMaxAggregationOperator.cs
- CellTreeNodeVisitors.cs
- AttachmentService.cs
- XhtmlBasicObjectListAdapter.cs
- DetailsViewRowCollection.cs
- KeyEventArgs.cs
- HtmlInputButton.cs
- ListSortDescription.cs
- SerialPort.cs
- DerivedKeySecurityToken.cs
- XmlNavigatorStack.cs
- DateTimeFormatInfoScanner.cs
- HtmlInputCheckBox.cs
- DrawingVisualDrawingContext.cs
- Triangle.cs
- CustomCategoryAttribute.cs
- Stroke2.cs
- ViewPort3D.cs
- LockingPersistenceProvider.cs
- URLAttribute.cs
- ObservableCollection.cs
- AssemblyNameProxy.cs
- OleDbConnectionFactory.cs
- ClonableStack.cs
- TraceSection.cs
- XmlSerializationGeneratedCode.cs
- ServerValidateEventArgs.cs
- DataControlFieldHeaderCell.cs
- DiagnosticEventProvider.cs
- ObjectListTitleAttribute.cs
- RestHandlerFactory.cs
- DataFormat.cs
- GridItemCollection.cs
- DataGridItem.cs
- ScriptingProfileServiceSection.cs
- WindowsListView.cs
- EntityContainer.cs
- DesignerDataRelationship.cs
- NamespaceMapping.cs
- Evidence.cs
- ElementsClipboardData.cs
- AutomationPattern.cs
- MessageSecurityVersion.cs
- FusionWrap.cs
- elementinformation.cs
- FamilyTypeface.cs
- TextSegment.cs
- OptimizedTemplateContentHelper.cs
- ExpandoObject.cs
- ThemeInfoAttribute.cs
- MessageDecoder.cs
- StringDictionary.cs
- EdmMember.cs
- DesignerWebPartChrome.cs
- VisualStyleInformation.cs
- ConnectionProviderAttribute.cs
- AccessibleObject.cs
- AsynchronousChannel.cs
- CaseInsensitiveComparer.cs
- KeyNotFoundException.cs
- DesignSurfaceServiceContainer.cs
- LayoutEditorPart.cs
- XmlILConstructAnalyzer.cs
- SecurityPolicySection.cs
- PropertyInformationCollection.cs
- ContainerParaClient.cs
- TaskResultSetter.cs
- EditorZoneBase.cs
- StringComparer.cs
- ThemeInfoAttribute.cs
- arabicshape.cs
- MimeImporter.cs
- DispatcherHookEventArgs.cs
- XmlMapping.cs
- GlobalItem.cs
- QuaternionAnimation.cs
- XamlClipboardData.cs
- DXD.cs
- RuntimeConfig.cs
- RayMeshGeometry3DHitTestResult.cs
- MD5CryptoServiceProvider.cs
- TimerElapsedEvenArgs.cs
- XmlQuerySequence.cs
- BitmapEffectInput.cs
- WhitespaceRuleLookup.cs
- Image.cs
- FixedPosition.cs
- UserControlBuildProvider.cs
- IssuedTokenParametersElement.cs
- SqlDataReaderSmi.cs
- StandardOleMarshalObject.cs
- ComponentEditorPage.cs
- AllMembershipCondition.cs
- GPPOINTF.cs