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
- AdapterDictionary.cs
- DataGridViewRowEventArgs.cs
- XmlLoader.cs
- ColumnResizeUndoUnit.cs
- RevocationPoint.cs
- DataGridPagerStyle.cs
- ListenerSingletonConnectionReader.cs
- CodeRemoveEventStatement.cs
- MatrixAnimationBase.cs
- Literal.cs
- ProviderSettingsCollection.cs
- PerspectiveCamera.cs
- ContextStaticAttribute.cs
- SharedPerformanceCounter.cs
- PageParser.cs
- GZipUtils.cs
- MemberMemberBinding.cs
- WeakEventTable.cs
- GlyphRun.cs
- SynchronizedDispatch.cs
- AsyncDataRequest.cs
- RsaSecurityToken.cs
- GACIdentityPermission.cs
- DomainUpDown.cs
- ProtocolsConfigurationHandler.cs
- DataServices.cs
- InvokeHandlers.cs
- MatrixAnimationBase.cs
- RunWorkerCompletedEventArgs.cs
- TextEditorTyping.cs
- DataControlImageButton.cs
- ByeMessageApril2005.cs
- InputLanguageCollection.cs
- IDataContractSurrogate.cs
- BrowserCapabilitiesCompiler.cs
- RestClientProxyHandler.cs
- SqlStatistics.cs
- ChannelManager.cs
- MetabaseSettings.cs
- WebPartVerbCollection.cs
- WebPartHeaderCloseVerb.cs
- NativeMethodsOther.cs
- ActivitiesCollection.cs
- CommonProperties.cs
- MiniAssembly.cs
- ConstantProjectedSlot.cs
- TwoPhaseCommit.cs
- MtomMessageEncoder.cs
- StaticContext.cs
- SecurityTokenSerializer.cs
- TransactionManager.cs
- CodeArrayCreateExpression.cs
- _Win32.cs
- ExpandCollapsePattern.cs
- DbSetClause.cs
- DoWorkEventArgs.cs
- MetadataPropertyCollection.cs
- ConstraintStruct.cs
- Object.cs
- ObfuscationAttribute.cs
- DataControlButton.cs
- SplitterPanel.cs
- StreamGeometryContext.cs
- XmlSchemaExporter.cs
- DoubleLink.cs
- ISAPIApplicationHost.cs
- CalendarSelectionChangedEventArgs.cs
- CurrentChangedEventManager.cs
- QilName.cs
- UnsafeNativeMethodsMilCoreApi.cs
- Certificate.cs
- BezierSegment.cs
- SqlVersion.cs
- BaseParaClient.cs
- MD5.cs
- DockPattern.cs
- CacheMemory.cs
- XXXOnTypeBuilderInstantiation.cs
- MemberAccessException.cs
- View.cs
- CodeCatchClause.cs
- HostingEnvironmentSection.cs
- RoleManagerSection.cs
- WeakReference.cs
- PageWrapper.cs
- ContravarianceAdapter.cs
- ArraySet.cs
- Matrix.cs
- SmiEventSink_DeferedProcessing.cs
- DiscoveryUtility.cs
- NegationPusher.cs
- IResourceProvider.cs
- Directory.cs
- DesignerAttribute.cs
- CacheForPrimitiveTypes.cs
- SqlDataSourceView.cs
- ApplicationServiceHelper.cs
- PathGradientBrush.cs
- SqlCacheDependencyDatabaseCollection.cs
- ListViewUpdateEventArgs.cs