Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Documents / MoveSizeWinEventHandler.cs / 1305600 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExpressionBuilder.cs
- WindowsGraphics.cs
- _LoggingObject.cs
- ErrorEventArgs.cs
- AudioDeviceOut.cs
- TableHeaderCell.cs
- WorkflowRuntimeServiceElement.cs
- AdCreatedEventArgs.cs
- TypeHelper.cs
- followingsibling.cs
- ThicknessAnimationUsingKeyFrames.cs
- AsmxEndpointPickerExtension.cs
- AppearanceEditorPart.cs
- SerializationHelper.cs
- EditingScope.cs
- OracleNumber.cs
- HealthMonitoringSection.cs
- DataGridRowAutomationPeer.cs
- FormViewCommandEventArgs.cs
- MenuEventArgs.cs
- ResourceDescriptionAttribute.cs
- SettingsAttributeDictionary.cs
- SmiConnection.cs
- TextBoxRenderer.cs
- TextEditorTyping.cs
- SelectedGridItemChangedEvent.cs
- ParserStreamGeometryContext.cs
- GenericEnumerator.cs
- XsltContext.cs
- OpCellTreeNode.cs
- PasswordDeriveBytes.cs
- DataGridCaption.cs
- RIPEMD160Managed.cs
- BaseCodePageEncoding.cs
- LinkButton.cs
- FontNamesConverter.cs
- ElementFactory.cs
- GridItemCollection.cs
- CompensationDesigner.cs
- ReachPrintTicketSerializer.cs
- ObjectCacheSettings.cs
- ProgressiveCrcCalculatingStream.cs
- BamlResourceSerializer.cs
- _NegoStream.cs
- Type.cs
- Vector3DKeyFrameCollection.cs
- AutomationIdentifier.cs
- HttpModuleActionCollection.cs
- GatewayDefinition.cs
- xmlglyphRunInfo.cs
- validation.cs
- EventListener.cs
- HtmlDocument.cs
- BamlLocalizationDictionary.cs
- WebSysDisplayNameAttribute.cs
- PixelFormat.cs
- DetailsViewInsertEventArgs.cs
- StaticTextPointer.cs
- ToolboxCategoryItems.cs
- ButtonField.cs
- PropertyNames.cs
- PropertyMap.cs
- ParallelTimeline.cs
- StylusPlugInCollection.cs
- login.cs
- ExpressionVisitorHelpers.cs
- MultipartContentParser.cs
- DateTimeConstantAttribute.cs
- StringReader.cs
- XamlFrame.cs
- ToolStripItemRenderEventArgs.cs
- SecurityChannelFactory.cs
- ForeignKeyConstraint.cs
- QualificationDataAttribute.cs
- ModuleBuilderData.cs
- ValidationError.cs
- XPathDocumentIterator.cs
- GlyphRunDrawing.cs
- VectorCollectionConverter.cs
- FaultDescription.cs
- ListMarkerLine.cs
- WebPartMenuStyle.cs
- ToolstripProfessionalRenderer.cs
- UInt32.cs
- DesignBindingValueUIHandler.cs
- RegexWorker.cs
- PageCatalogPart.cs
- MouseGesture.cs
- XmlSchemaObject.cs
- CacheSection.cs
- JsonReaderWriterFactory.cs
- counter.cs
- PenLineJoinValidation.cs
- IntegerValidatorAttribute.cs
- SmiMetaDataProperty.cs
- ComponentEditorPage.cs
- ProcessModelInfo.cs
- FrameworkContextData.cs
- DeferredSelectedIndexReference.cs
- XpsFilter.cs