Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / UIAutomationClient / MS / Internal / Automation / MenuTracker.cs / 1305600 / MenuTracker.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Class used to track context menus appearing // // History: // 3/23/2004 : preid 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
- PropertyValueUIItem.cs
- HtmlPanelAdapter.cs
- ProbeMatchesMessageCD1.cs
- IDispatchConstantAttribute.cs
- XamlVector3DCollectionSerializer.cs
- SafeLibraryHandle.cs
- NameScopePropertyAttribute.cs
- Converter.cs
- MetaType.cs
- Path.cs
- PropertyTab.cs
- ErrorInfoXmlDocument.cs
- MethodSignatureGenerator.cs
- ApplicationActivator.cs
- UserControl.cs
- SizeConverter.cs
- ValueCollectionParameterReader.cs
- StoreItemCollection.Loader.cs
- TemplateBindingExtension.cs
- RoleService.cs
- DateTimeOffset.cs
- OptionUsage.cs
- Utils.cs
- OleDbRowUpdatingEvent.cs
- BaseUriHelper.cs
- TextTrailingCharacterEllipsis.cs
- ProviderMetadata.cs
- Documentation.cs
- RenderingEventArgs.cs
- PointCollection.cs
- safex509handles.cs
- RemotingConfiguration.cs
- SystemIcons.cs
- DefaultEventAttribute.cs
- Timer.cs
- MeasurementDCInfo.cs
- ControlCodeDomSerializer.cs
- DynamicHyperLink.cs
- DateTimePicker.cs
- InvalidFilterCriteriaException.cs
- VisualProxy.cs
- AdornerPresentationContext.cs
- DataGridViewColumnCollectionEditor.cs
- InternalTypeHelper.cs
- HTTPNotFoundHandler.cs
- CollectionContainer.cs
- EditBehavior.cs
- ArrayList.cs
- ChangeDirector.cs
- UnionCodeGroup.cs
- XPathNodePointer.cs
- Deflater.cs
- OdbcConnectionHandle.cs
- BaseCodePageEncoding.cs
- TraceInternal.cs
- DataObjectSettingDataEventArgs.cs
- KerberosSecurityTokenProvider.cs
- UserPreferenceChangingEventArgs.cs
- Pair.cs
- PropertyIDSet.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- MessageSecurityOverMsmqElement.cs
- QilValidationVisitor.cs
- SequenceDesigner.cs
- SerializableAttribute.cs
- PropertyNames.cs
- IssuerInformation.cs
- VisualBasicHelper.cs
- XmlSiteMapProvider.cs
- RoutedCommand.cs
- ImageDesigner.cs
- XmlSchemaImporter.cs
- RedistVersionInfo.cs
- MetadataPropertyCollection.cs
- XPathArrayIterator.cs
- OleDbStruct.cs
- PropertyInformationCollection.cs
- QueryContinueDragEventArgs.cs
- IDispatchConstantAttribute.cs
- GradientBrush.cs
- SystemInformation.cs
- FileStream.cs
- PropertyMetadata.cs
- KeyInstance.cs
- ComponentSerializationService.cs
- remotingproxy.cs
- XmlDocumentSerializer.cs
- DataGridViewDataConnection.cs
- SpeechUI.cs
- SQlBooleanStorage.cs
- RuleSettings.cs
- WebPartEditVerb.cs
- Task.cs
- ControlBindingsCollection.cs
- TextEncodedRawTextWriter.cs
- Pair.cs
- ObfuscationAttribute.cs
- CacheEntry.cs
- GridItemPatternIdentifiers.cs
- CompositeFontParser.cs