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
- MethodCallConverter.cs
- FixedPageStructure.cs
- CookieParameter.cs
- DetailsViewDeletedEventArgs.cs
- SqlGatherConsumedAliases.cs
- SafeNativeMethods.cs
- TrackingMemoryStream.cs
- HttpCookie.cs
- OperationParameterInfoCollection.cs
- ColorTransformHelper.cs
- DataControlFieldsEditor.cs
- ICspAsymmetricAlgorithm.cs
- AuthenticatedStream.cs
- DBConcurrencyException.cs
- FlowDocumentScrollViewer.cs
- BufferedReceiveElement.cs
- DBDataPermission.cs
- CommentEmitter.cs
- DesignTimeVisibleAttribute.cs
- CheckBoxField.cs
- ClientSideQueueItem.cs
- ChannelCacheDefaults.cs
- DynamicRendererThreadManager.cs
- CompoundFileStorageReference.cs
- EntityTransaction.cs
- ToolStripActionList.cs
- StrokeCollection.cs
- XmlSerializerNamespaces.cs
- mactripleDES.cs
- NegatedConstant.cs
- CollectionViewGroupInternal.cs
- GridItemPattern.cs
- DataTrigger.cs
- CompensationExtension.cs
- PageThemeCodeDomTreeGenerator.cs
- Filter.cs
- ConfigurationSettings.cs
- DynamicEntity.cs
- MonitorWrapper.cs
- OutputWindow.cs
- ListViewDeleteEventArgs.cs
- CodeMemberField.cs
- RootBrowserWindow.cs
- ConfigurationStrings.cs
- SimpleBitVector32.cs
- elementinformation.cs
- FeatureSupport.cs
- UseAttributeSetsAction.cs
- ObjectNotFoundException.cs
- StaticSiteMapProvider.cs
- ExecutionScope.cs
- ColorAnimationUsingKeyFrames.cs
- ParallelTimeline.cs
- Cursors.cs
- UshortList2.cs
- SafeRightsManagementPubHandle.cs
- GrammarBuilderPhrase.cs
- XmlEnumAttribute.cs
- HtmlAnchor.cs
- NoClickablePointException.cs
- SafeEventLogWriteHandle.cs
- SamlDoNotCacheCondition.cs
- URIFormatException.cs
- NotCondition.cs
- TaiwanCalendar.cs
- AnnotationService.cs
- DecoratedNameAttribute.cs
- EnumValidator.cs
- WindowsListView.cs
- TextFormatterContext.cs
- SerializerWriterEventHandlers.cs
- ColorMatrix.cs
- Collection.cs
- StringAttributeCollection.cs
- UInt64.cs
- AssemblyBuilder.cs
- InlineObject.cs
- Rotation3D.cs
- VisualTarget.cs
- basecomparevalidator.cs
- GridViewSelectEventArgs.cs
- TimeSpanMinutesConverter.cs
- ObjectStateEntry.cs
- ProviderSettings.cs
- FixedTextPointer.cs
- BamlLocalizationDictionary.cs
- HatchBrush.cs
- ZoneMembershipCondition.cs
- bindurihelper.cs
- HtmlHistory.cs
- EventManager.cs
- TypeDescriptor.cs
- ZoneIdentityPermission.cs
- HandlerFactoryWrapper.cs
- SelectedPathEditor.cs
- ZoneMembershipCondition.cs
- SqlProvider.cs
- SortAction.cs
- ContactManager.cs
- Adorner.cs