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
- CompiledXpathExpr.cs
- SqlClientWrapperSmiStreamChars.cs
- loginstatus.cs
- ColorAnimationUsingKeyFrames.cs
- SiteOfOriginContainer.cs
- TokenBasedSet.cs
- ValuePattern.cs
- FrameworkElementAutomationPeer.cs
- IndexedString.cs
- HttpDebugHandler.cs
- PageAsyncTask.cs
- Point3D.cs
- AspNetHostingPermission.cs
- hebrewshape.cs
- OdbcEnvironmentHandle.cs
- DesignTimeParseData.cs
- ZeroOpNode.cs
- CompositeDataBoundControl.cs
- IxmlLineInfo.cs
- ContentTextAutomationPeer.cs
- MemberNameValidator.cs
- DateTimeOffsetStorage.cs
- EncoderBestFitFallback.cs
- AdobeCFFWrapper.cs
- MethodImplAttribute.cs
- BaseCodePageEncoding.cs
- CuspData.cs
- DbProviderFactoriesConfigurationHandler.cs
- OLEDB_Util.cs
- AspNetHostingPermission.cs
- InstanceDescriptor.cs
- SettingsPropertyValue.cs
- Codec.cs
- CodeNamespaceCollection.cs
- SchemaCreator.cs
- Brush.cs
- SqlGenerator.cs
- AddressHeaderCollection.cs
- WebPartConnectionsConfigureVerb.cs
- ConditionCollection.cs
- ChannelSinkStacks.cs
- QuadraticBezierSegment.cs
- GridEntryCollection.cs
- SmtpReplyReaderFactory.cs
- AbstractSvcMapFileLoader.cs
- ObjectStateManager.cs
- TargetInvocationException.cs
- DiagnosticTrace.cs
- ControlPersister.cs
- TextFormatterHost.cs
- DbModificationCommandTree.cs
- QuadraticBezierSegment.cs
- Token.cs
- UiaCoreProviderApi.cs
- SymmetricAlgorithm.cs
- ProjectionCamera.cs
- SymmetricSecurityBindingElement.cs
- Pen.cs
- ObjectListCommand.cs
- DiagnosticsConfiguration.cs
- BorderGapMaskConverter.cs
- UserCancellationException.cs
- CompiledQuery.cs
- BindableTemplateBuilder.cs
- ConfigurationPropertyCollection.cs
- MarkerProperties.cs
- IteratorDescriptor.cs
- PropertyMapper.cs
- ActivationArguments.cs
- WbemProvider.cs
- ManipulationLogic.cs
- Font.cs
- Stroke.cs
- WindowsScrollBar.cs
- ListViewSortEventArgs.cs
- TraceRecord.cs
- XPathItem.cs
- util.cs
- AsyncCompletedEventArgs.cs
- WebRequestModulesSection.cs
- HotCommands.cs
- oledbmetadatacollectionnames.cs
- OptimizedTemplateContent.cs
- ECDsa.cs
- HttpException.cs
- MarkupProperty.cs
- DBSchemaTable.cs
- ToolStripInSituService.cs
- NodeLabelEditEvent.cs
- TdsRecordBufferSetter.cs
- WindowHideOrCloseTracker.cs
- IisTraceWebEventProvider.cs
- ButtonRenderer.cs
- __Error.cs
- WebSysDisplayNameAttribute.cs
- WebPartZoneCollection.cs
- WindowsRichEdit.cs
- Helper.cs
- UndoEngine.cs
- CorrelationManager.cs