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
- MimeMapping.cs
- InitiatorSessionSymmetricTransportSecurityProtocol.cs
- DbConvert.cs
- MouseCaptureWithinProperty.cs
- LinqDataSourceView.cs
- EncryptedType.cs
- Object.cs
- XmlDataContract.cs
- CookieProtection.cs
- iisPickupDirectory.cs
- MemberDescriptor.cs
- ParentUndoUnit.cs
- IndexingContentUnit.cs
- TemplateColumn.cs
- HttpListenerResponse.cs
- EventNotify.cs
- uribuilder.cs
- CoTaskMemSafeHandle.cs
- Bidi.cs
- TriggerActionCollection.cs
- AtlasWeb.Designer.cs
- SelectionProviderWrapper.cs
- HtmlTableRow.cs
- CommentEmitter.cs
- ToolboxItemFilterAttribute.cs
- AssemblyName.cs
- HandleExceptionArgs.cs
- TextBoxRenderer.cs
- DelegatedStream.cs
- WebPartTransformerAttribute.cs
- SimpleHandlerBuildProvider.cs
- ResourcesChangeInfo.cs
- AQNBuilder.cs
- MessageLoggingFilterTraceRecord.cs
- MemoryRecordBuffer.cs
- DateTimeConstantAttribute.cs
- listitem.cs
- PublisherMembershipCondition.cs
- ISAPIApplicationHost.cs
- InputProviderSite.cs
- GeometryGroup.cs
- SHA256Cng.cs
- RangeBaseAutomationPeer.cs
- ObjectDataSourceView.cs
- XmlTextReaderImpl.cs
- JournalEntryStack.cs
- NumberFunctions.cs
- PropertyInfoSet.cs
- XmlSchemaCollection.cs
- DataGridViewTextBoxColumn.cs
- BitmapEffectDrawing.cs
- Hashtable.cs
- TextStore.cs
- LOSFormatter.cs
- DashStyle.cs
- Calendar.cs
- ChangeInterceptorAttribute.cs
- SettingsBindableAttribute.cs
- BooleanAnimationBase.cs
- OdbcConnectionOpen.cs
- XhtmlBasicImageAdapter.cs
- SQLBytes.cs
- QueryExecutionOption.cs
- RegexStringValidator.cs
- OpCodes.cs
- CompilerResults.cs
- xsdvalidator.cs
- Crc32.cs
- CodePropertyReferenceExpression.cs
- FaultImportOptions.cs
- HwndAppCommandInputProvider.cs
- PenThread.cs
- DPCustomTypeDescriptor.cs
- XmlFormatExtensionAttribute.cs
- GetResponse.cs
- GrammarBuilderRuleRef.cs
- OleDbException.cs
- MobileListItem.cs
- DetailsViewAutoFormat.cs
- LineSegment.cs
- HttpApplication.cs
- PrintingPermission.cs
- ResXFileRef.cs
- LOSFormatter.cs
- CqlBlock.cs
- Rotation3DAnimation.cs
- ContainerUIElement3D.cs
- SoapConverter.cs
- CollectionViewProxy.cs
- HttpApplicationFactory.cs
- QueryCursorEventArgs.cs
- WinEventTracker.cs
- AssemblyHelper.cs
- StylusPointCollection.cs
- EntityReference.cs
- GraphicsPath.cs
- SortFieldComparer.cs
- ReversePositionQuery.cs
- JavaScriptString.cs
- SessionKeyExpiredException.cs