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
- RegexRunnerFactory.cs
- DispatchChannelSink.cs
- FilterElement.cs
- IndividualDeviceConfig.cs
- MulticastNotSupportedException.cs
- GlyphCollection.cs
- HttpListenerException.cs
- AppModelKnownContentFactory.cs
- ValidationErrorEventArgs.cs
- Config.cs
- GenericTextProperties.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- DocumentViewerBaseAutomationPeer.cs
- Serializer.cs
- WhiteSpaceTrimStringConverter.cs
- HiddenFieldPageStatePersister.cs
- ReferentialConstraintRoleElement.cs
- ImageField.cs
- ParameterCollection.cs
- ToggleButton.cs
- XmlRootAttribute.cs
- DataTableExtensions.cs
- ConfigurationProperty.cs
- RelatedPropertyManager.cs
- UnsafeNativeMethods.cs
- SourceElementsCollection.cs
- BindingListCollectionView.cs
- Shape.cs
- FixedSOMContainer.cs
- ProcessModelSection.cs
- WindowsListViewItemStartMenu.cs
- FontEditor.cs
- XmlUTF8TextWriter.cs
- CopyCodeAction.cs
- UnknownWrapper.cs
- CodeTypeReferenceExpression.cs
- TabControlCancelEvent.cs
- base64Transforms.cs
- InvokeSchedule.cs
- ProcessProtocolHandler.cs
- SchemaEntity.cs
- BindableTemplateBuilder.cs
- PolyLineSegmentFigureLogic.cs
- OracleConnection.cs
- ConstrainedGroup.cs
- Rect.cs
- MaskedTextProvider.cs
- ServiceHostingEnvironmentSection.cs
- ETagAttribute.cs
- GridPattern.cs
- MULTI_QI.cs
- RepeaterItemEventArgs.cs
- DrawingGroup.cs
- KnownBoxes.cs
- ProjectionPlanCompiler.cs
- TryLoadRunnableWorkflowCommand.cs
- XPathExpr.cs
- XmlSchemaRedefine.cs
- PageClientProxyGenerator.cs
- DoubleIndependentAnimationStorage.cs
- NativeMethods.cs
- OdbcConnectionHandle.cs
- HwndTarget.cs
- SByte.cs
- TriggerActionCollection.cs
- keycontainerpermission.cs
- FlowDocumentScrollViewer.cs
- InheritedPropertyDescriptor.cs
- XmlSchemaResource.cs
- EdmTypeAttribute.cs
- TransactionFlowOption.cs
- ModuleConfigurationInfo.cs
- ColorConverter.cs
- ItemsPresenter.cs
- ModuleBuilder.cs
- SelectionEditor.cs
- FormViewPagerRow.cs
- TextParagraph.cs
- SystemColors.cs
- EventArgs.cs
- UnsafeNativeMethods.cs
- DiscreteKeyFrames.cs
- KnownAssemblyEntry.cs
- XPathNavigatorKeyComparer.cs
- StrokeNodeOperations.cs
- MetadataArtifactLoaderCompositeResource.cs
- SocketCache.cs
- ResourceDefaultValueAttribute.cs
- XmlSchemaValidationException.cs
- propertyentry.cs
- __ConsoleStream.cs
- StretchValidation.cs
- ByteAnimation.cs
- ParserOptions.cs
- CornerRadius.cs
- CaretElement.cs
- RightsManagementEncryptedStream.cs
- RegexParser.cs
- ServiceModelReg.cs
- TextEndOfParagraph.cs