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
- RegularExpressionValidator.cs
- SessionIDManager.cs
- ComponentSerializationService.cs
- WebServiceResponse.cs
- RegexWriter.cs
- LinearGradientBrush.cs
- cookiecollection.cs
- DoubleAnimationClockResource.cs
- AuthorizationRuleCollection.cs
- Converter.cs
- ToolCreatedEventArgs.cs
- WebServiceErrorEvent.cs
- ClientSettingsStore.cs
- TemplateBaseAction.cs
- InkSerializer.cs
- StreamResourceInfo.cs
- FontWeightConverter.cs
- CodeDelegateInvokeExpression.cs
- CodeAccessPermission.cs
- XmlStringTable.cs
- AudioDeviceOut.cs
- RouteUrlExpressionBuilder.cs
- TextTreeInsertUndoUnit.cs
- HtmlInputText.cs
- DummyDataSource.cs
- XmlNodeList.cs
- IRCollection.cs
- FamilyTypeface.cs
- mediaeventargs.cs
- ErrorFormatterPage.cs
- InProcStateClientManager.cs
- OverlappedContext.cs
- MessageContractAttribute.cs
- DomainConstraint.cs
- SafeHGlobalHandleCritical.cs
- SqlClientWrapperSmiStream.cs
- CFStream.cs
- ToolStripContentPanel.cs
- GiveFeedbackEvent.cs
- VariableQuery.cs
- IPGlobalProperties.cs
- TextDecoration.cs
- TreeIterators.cs
- CodeSnippetExpression.cs
- BulletedList.cs
- FrugalMap.cs
- DataBoundControlAdapter.cs
- NopReturnReader.cs
- StringDictionaryEditor.cs
- TypeConverters.cs
- XmlSchemaDatatype.cs
- OperationAbortedException.cs
- ShaderRenderModeValidation.cs
- RichTextBoxConstants.cs
- Timeline.cs
- NamespaceList.cs
- ListViewInsertedEventArgs.cs
- HuffCodec.cs
- PeerApplicationLaunchInfo.cs
- bidPrivateBase.cs
- WebPart.cs
- StaticFileHandler.cs
- Image.cs
- UriScheme.cs
- SafeEventLogWriteHandle.cs
- ImageResources.Designer.cs
- CollectionBuilder.cs
- Speller.cs
- PresentationSource.cs
- _LocalDataStore.cs
- SchemaDeclBase.cs
- TextEditor.cs
- ToolboxItem.cs
- ConfigurationSectionGroup.cs
- SimpleHandlerBuildProvider.cs
- ConnectionManagementSection.cs
- PresentationTraceSources.cs
- MimePart.cs
- FamilyCollection.cs
- HtmlTableRow.cs
- TextOutput.cs
- TdsValueSetter.cs
- Window.cs
- XPathNavigator.cs
- DbMetaDataColumnNames.cs
- DomainUpDown.cs
- SqlServices.cs
- _DigestClient.cs
- HasCopySemanticsAttribute.cs
- TableHeaderCell.cs
- EventLogWatcher.cs
- HttpModulesSection.cs
- ItemsChangedEventArgs.cs
- InputLanguageManager.cs
- StylusDevice.cs
- XmlSchemaObjectTable.cs
- RichTextBoxAutomationPeer.cs
- DataGridColumnDropSeparator.cs
- DrawingContextDrawingContextWalker.cs
- OrthographicCamera.cs