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
- FileInfo.cs
- ReadOnlyHierarchicalDataSourceView.cs
- MetadataPropertyCollection.cs
- SmiEventSink.cs
- LocatorGroup.cs
- HatchBrush.cs
- Property.cs
- GenerateTemporaryTargetAssembly.cs
- InkCanvasInnerCanvas.cs
- EncryptedType.cs
- ReadOnlyCollection.cs
- BuildDependencySet.cs
- AssemblyBuilder.cs
- ColorAnimation.cs
- remotingproxy.cs
- InheritanceContextChangedEventManager.cs
- HtmlUtf8RawTextWriter.cs
- DataMember.cs
- ArrangedElementCollection.cs
- SafeRightsManagementHandle.cs
- SizeIndependentAnimationStorage.cs
- WindowsToolbarAsMenu.cs
- ThreadAttributes.cs
- SatelliteContractVersionAttribute.cs
- RootDesignerSerializerAttribute.cs
- ParagraphResult.cs
- Rect.cs
- ObjectStateEntry.cs
- UncommonField.cs
- SupportsEventValidationAttribute.cs
- RoutedEventConverter.cs
- XNodeValidator.cs
- ContextMenu.cs
- MeasureItemEvent.cs
- ClientScriptManagerWrapper.cs
- ScrollViewerAutomationPeer.cs
- PageAdapter.cs
- EncoderExceptionFallback.cs
- CodeMemberEvent.cs
- DecimalAnimationUsingKeyFrames.cs
- ClientEndpointLoader.cs
- HyperLink.cs
- SurrogateDataContract.cs
- StrokeIntersection.cs
- WebServiceData.cs
- SqlError.cs
- CategoryAttribute.cs
- ControlPropertyNameConverter.cs
- SocketPermission.cs
- JapaneseCalendar.cs
- OSEnvironmentHelper.cs
- HtmlInputHidden.cs
- VScrollBar.cs
- InputReferenceExpression.cs
- PointConverter.cs
- ExceptionUtil.cs
- NotFiniteNumberException.cs
- ArgumentDesigner.xaml.cs
- InvalidCommandTreeException.cs
- RelatedPropertyManager.cs
- WebBrowserDesigner.cs
- MDIWindowDialog.cs
- DataContractJsonSerializer.cs
- While.cs
- DependencyObjectProvider.cs
- DesignSurfaceEvent.cs
- UInt64.cs
- Formatter.cs
- SmiRecordBuffer.cs
- SpecularMaterial.cs
- SessionEndingEventArgs.cs
- NamespaceEmitter.cs
- CellPartitioner.cs
- HotSpotCollection.cs
- XamlSerializerUtil.cs
- TaskExtensions.cs
- SqlIdentifier.cs
- XmlFileEditor.cs
- DocumentScope.cs
- DataSourceCacheDurationConverter.cs
- DataSetMappper.cs
- ExtensibleClassFactory.cs
- _DigestClient.cs
- EmptyStringExpandableObjectConverter.cs
- SQLChars.cs
- CounterCreationDataCollection.cs
- UserNameSecurityToken.cs
- ResourceBinder.cs
- RepeaterDesigner.cs
- XmlSchemaImport.cs
- COM2Enum.cs
- DependencyStoreSurrogate.cs
- HttpCacheParams.cs
- ViewStateModeByIdAttribute.cs
- RootBrowserWindowProxy.cs
- DesignRelation.cs
- HierarchicalDataBoundControl.cs
- ImageMap.cs
- CustomTypeDescriptor.cs
- QuaternionValueSerializer.cs