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
- Transform.cs
- CultureInfoConverter.cs
- CommandField.cs
- ErrorTableItemStyle.cs
- ProtectedProviderSettings.cs
- MetadataUtilsSmi.cs
- CallSiteHelpers.cs
- XamlReaderHelper.cs
- MaskedTextBoxTextEditorDropDown.cs
- InputMethodStateTypeInfo.cs
- ItemChangedEventArgs.cs
- TableParaClient.cs
- XmlNullResolver.cs
- PersonalizationStateInfoCollection.cs
- entityreference_tresulttype.cs
- GeneralTransform3DTo2DTo3D.cs
- AppLevelCompilationSectionCache.cs
- ExtensionFile.cs
- SrgsGrammarCompiler.cs
- SecurityTraceRecordHelper.cs
- XmlSerializerOperationGenerator.cs
- _ScatterGatherBuffers.cs
- FormViewDeleteEventArgs.cs
- CheckBox.cs
- Table.cs
- RtType.cs
- GroupBox.cs
- SmiMetaData.cs
- WebPartActionVerb.cs
- SafeFileMappingHandle.cs
- WebPartDeleteVerb.cs
- CallbackWrapper.cs
- FontCacheUtil.cs
- FontFamily.cs
- OdbcEnvironmentHandle.cs
- SqlProfileProvider.cs
- LoginUtil.cs
- WebUtil.cs
- TextTreeExtractElementUndoUnit.cs
- LinkLabelLinkClickedEvent.cs
- ScrollBarAutomationPeer.cs
- CollectionBuilder.cs
- PropertyTabChangedEvent.cs
- CodeTypeReferenceExpression.cs
- DrawingImage.cs
- RotateTransform.cs
- SystemTcpStatistics.cs
- RangeValuePattern.cs
- FontStretch.cs
- ValidatorAttribute.cs
- GradientSpreadMethodValidation.cs
- SQLCharsStorage.cs
- DispatcherExceptionEventArgs.cs
- TableLayoutCellPaintEventArgs.cs
- SqlPersonalizationProvider.cs
- MimeTypeAttribute.cs
- DataTableMappingCollection.cs
- JsonCollectionDataContract.cs
- BeginStoryboard.cs
- VBCodeProvider.cs
- XmlSchemaInfo.cs
- FrameworkElement.cs
- VisualStateChangedEventArgs.cs
- BooleanConverter.cs
- ProfilePropertySettingsCollection.cs
- HashMembershipCondition.cs
- PriorityItem.cs
- ProtectedConfigurationSection.cs
- XmlSchemaSimpleType.cs
- Panel.cs
- WsatTransactionHeader.cs
- ExpressionBindings.cs
- OleDbException.cs
- CodeDirectionExpression.cs
- NavigationCommands.cs
- Rule.cs
- ByteAnimation.cs
- InboundActivityHelper.cs
- Misc.cs
- SqlDataSourceCommandEventArgs.cs
- ManipulationVelocities.cs
- DisplayMemberTemplateSelector.cs
- Vector3DConverter.cs
- CustomTypeDescriptor.cs
- QueryParameter.cs
- DeploymentSectionCache.cs
- WindowsListBox.cs
- PageContentCollection.cs
- BmpBitmapDecoder.cs
- propertytag.cs
- IndexedString.cs
- ListControl.cs
- HtmlInputSubmit.cs
- CheckBoxStandardAdapter.cs
- CustomValidator.cs
- RoleManagerModule.cs
- FlowDocumentReaderAutomationPeer.cs
- EllipseGeometry.cs
- WebService.cs
- AsyncCompletedEventArgs.cs