Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / AccessibleTech / longhorn / Automation / UIAutomationClient / MS / Internal / Automation / MenuTracker.cs / 1 / MenuTracker.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: Class used to track context menus appearing
//
// History:
// 3/23/2004 : [....] Created
//
//---------------------------------------------------------------------------
using System;
using System.Text;
using System.Windows.Automation;
using System.Diagnostics;
using MS.Win32;
namespace MS.Internal.Automation
{
internal delegate void MenuHandler( AutomationElement rawEl, bool menuHasOpened );
// MenuOpened - Class used to track context menus appearing
internal class MenuTracker : WinEventWrap
{
//-----------------------------------------------------
//
// Constructors
//
//-----------------------------------------------------
#region Constructors
internal MenuTracker(MenuHandler newHandler)
: base(new int[] {NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART, NativeMethods.EVENT_SYSTEM_MENUPOPUPEND})
{
AddCallback(newHandler);
}
#endregion Constructors
//------------------------------------------------------
//
// Internal Methods
//
//-----------------------------------------------------
#region Internal Methods
internal override void WinEventProc(int eventId, IntPtr hwnd, int idObject, int idChild, uint eventTime)
{
AutomationElement rawEl = null;
bool menuHasOpened = eventId == NativeMethods.EVENT_SYSTEM_MENUPOPUPSTART;
// Only create a raw element wrapper if the menu has popped up. Send a
// null element for menu closed (the element isn't available anymore).
//
if( menuHasOpened )
{
// Ignore if this is a bogus hwnd (shouldn't happen)
if( hwnd == IntPtr.Zero )
return;
NativeMethods.HWND nativeHwnd = NativeMethods.HWND.Cast( hwnd );
if( !SafeNativeMethods.IsWindow( nativeHwnd ) )
return;
// Filter... send events for visible hwnds only
if( !SafeNativeMethods.IsWindowVisible( nativeHwnd ) )
return;
rawEl = AutomationElement.FromHandle( hwnd );
}
// Do callback. This handler is called due to a WinEvent on the client. The handler
// is going to hand off the work of calling out to the client code to another thread
// via a queue so it is safe to do this callback w/in the lock.
object [] handlers = GetHandlers();
Debug.Assert(handlers.Length <= 1, "handlers.Length");
if( handlers.Length > 0 )
( ( MenuHandler )handlers[0] )( rawEl, menuHasOpened );
}
#endregion Internal Methods
}
}
// 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
- ProjectionQueryOptionExpression.cs
- ColorTransformHelper.cs
- XmlSchemaSimpleContentExtension.cs
- ServiceReference.cs
- UpnEndpointIdentityExtension.cs
- DataControlFieldCell.cs
- ParameterCollection.cs
- RectangleGeometry.cs
- StringResourceManager.cs
- RowVisual.cs
- CssStyleCollection.cs
- StylusTouchDevice.cs
- UndirectedGraph.cs
- AttributeQuery.cs
- Decoder.cs
- EventRecord.cs
- FontInfo.cs
- DataSvcMapFile.cs
- CollectionViewSource.cs
- HostedController.cs
- ByteAnimationUsingKeyFrames.cs
- AppSettings.cs
- BooleanConverter.cs
- CodeCompileUnit.cs
- TextPattern.cs
- DataGridViewCheckBoxCell.cs
- DBCSCodePageEncoding.cs
- AccessDataSource.cs
- WebPartPersonalization.cs
- iisPickupDirectory.cs
- PingOptions.cs
- HostUtils.cs
- MailHeaderInfo.cs
- RandomNumberGenerator.cs
- TemplateBindingExpression.cs
- WebPartEditorCancelVerb.cs
- XmlDocumentType.cs
- MenuBase.cs
- ElementNotAvailableException.cs
- UnsafeNativeMethods.cs
- AttributeUsageAttribute.cs
- SqlWorkflowPersistenceService.cs
- PointLight.cs
- CatalogPartCollection.cs
- CodeTypeDeclaration.cs
- XmlWellformedWriter.cs
- RuleSetDialog.cs
- ScriptingRoleServiceSection.cs
- XmlEncodedRawTextWriter.cs
- TreeViewAutomationPeer.cs
- XMLUtil.cs
- ContentPlaceHolder.cs
- LayoutInformation.cs
- RowToFieldTransformer.cs
- ScaleTransform3D.cs
- HMACSHA384.cs
- LoadedOrUnloadedOperation.cs
- GACIdentityPermission.cs
- LongCountAggregationOperator.cs
- TableAdapterManagerMethodGenerator.cs
- PersistenceIOParticipant.cs
- ClientOperationFormatterProvider.cs
- InstanceDataCollectionCollection.cs
- DefinitionUpdate.cs
- BuildProviderCollection.cs
- ChangeNode.cs
- BaseCollection.cs
- SafePointer.cs
- TrackingProfileDeserializationException.cs
- PixelFormat.cs
- XmlBufferReader.cs
- XamlStream.cs
- WebPartManagerInternals.cs
- CorrelationManager.cs
- WindowsPrincipal.cs
- XmlSchemaComplexContent.cs
- VersionedStream.cs
- DataGridTablesFactory.cs
- DoubleLinkListEnumerator.cs
- MediaCommands.cs
- SurrogateEncoder.cs
- VisualStyleElement.cs
- Debug.cs
- SQLBytes.cs
- HtmlTableRowCollection.cs
- ToolStripTextBox.cs
- DataGridPreparingCellForEditEventArgs.cs
- _AutoWebProxyScriptWrapper.cs
- UserNameSecurityTokenParameters.cs
- RootProfilePropertySettingsCollection.cs
- StorageEntityTypeMapping.cs
- MimeBasePart.cs
- TemplateBindingExpressionConverter.cs
- EdmFunctions.cs
- ColumnMapProcessor.cs
- FontStyle.cs
- HtmlInputFile.cs
- FontFamilyValueSerializer.cs
- PageOutputQuality.cs
- COM2IDispatchConverter.cs