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
- TextTreeExtractElementUndoUnit.cs
- ExpressionNode.cs
- TextComposition.cs
- SymLanguageType.cs
- NavigationWindowAutomationPeer.cs
- DependencyPropertyChangedEventArgs.cs
- IDictionary.cs
- SessionState.cs
- TemplateBindingExtension.cs
- EventLogEntry.cs
- CollectionContainer.cs
- RuntimeHelpers.cs
- TextDpi.cs
- localization.cs
- BitmapVisualManager.cs
- PropertyMappingExceptionEventArgs.cs
- UIElementParaClient.cs
- AmbiguousMatchException.cs
- MaskedTextProvider.cs
- OleDbParameterCollection.cs
- CopyOnWriteList.cs
- ModelItemExtensions.cs
- ClientTarget.cs
- KeyGestureConverter.cs
- DataGridViewColumnCollectionEditor.cs
- MarkupExtensionSerializer.cs
- AttachedPropertyInfo.cs
- CorrelationToken.cs
- ColumnCollection.cs
- SmiTypedGetterSetter.cs
- SqlFileStream.cs
- InvalidFilterCriteriaException.cs
- autovalidator.cs
- CalendarTable.cs
- KoreanLunisolarCalendar.cs
- Deserializer.cs
- TextChange.cs
- StrongName.cs
- TransformDescriptor.cs
- WebPartAuthorizationEventArgs.cs
- PermissionSetEnumerator.cs
- MexTcpBindingCollectionElement.cs
- ToolTip.cs
- OdbcReferenceCollection.cs
- OpenTypeLayoutCache.cs
- XPathNodeList.cs
- StringCollectionEditor.cs
- DisplayToken.cs
- BatchServiceHost.cs
- ISCIIEncoding.cs
- List.cs
- RightsManagementInformation.cs
- WindowsAuthenticationModule.cs
- HtmlElementCollection.cs
- PerformanceCounterPermission.cs
- SqlExpressionNullability.cs
- FileDialog_Vista_Interop.cs
- EnlistmentState.cs
- ToolStripDropDownItem.cs
- XamlSerializer.cs
- DataGridViewSelectedCellCollection.cs
- IdentityModelDictionary.cs
- UnsafeNativeMethods.cs
- ToolStripGrip.cs
- DayRenderEvent.cs
- AnimationException.cs
- RepeaterItemEventArgs.cs
- SerializationStore.cs
- XmlValidatingReader.cs
- CodeAssignStatement.cs
- CalendarDateChangedEventArgs.cs
- SourceItem.cs
- DictionaryKeyPropertyAttribute.cs
- ProxyFragment.cs
- WmlPageAdapter.cs
- RotateTransform3D.cs
- BinaryFormatter.cs
- CounterSample.cs
- UnsafePeerToPeerMethods.cs
- FontEmbeddingManager.cs
- FloatAverageAggregationOperator.cs
- ProfileElement.cs
- SemaphoreFullException.cs
- HijriCalendar.cs
- CommonObjectSecurity.cs
- wmiutil.cs
- CodeObject.cs
- ScrollProperties.cs
- DrawItemEvent.cs
- OpenFileDialog.cs
- Debugger.cs
- MyContact.cs
- PackagePartCollection.cs
- AVElementHelper.cs
- HMAC.cs
- RemotingConfigParser.cs
- InputLanguage.cs
- SpellerStatusTable.cs
- DataGridViewRowEventArgs.cs
- ButtonFlatAdapter.cs