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
- Utils.cs
- OdbcConnectionFactory.cs
- HtmlAnchor.cs
- FixedTextPointer.cs
- WindowsMenu.cs
- DurationConverter.cs
- UIElementPropertyUndoUnit.cs
- COM2ComponentEditor.cs
- AssemblyName.cs
- ApplicationInterop.cs
- TitleStyle.cs
- WebBrowserDocumentCompletedEventHandler.cs
- XmlSignificantWhitespace.cs
- StringUtil.cs
- Root.cs
- WindowsScrollBar.cs
- TagPrefixInfo.cs
- CultureSpecificCharacterBufferRange.cs
- StylusPointProperty.cs
- XPathMultyIterator.cs
- TextRangeSerialization.cs
- VectorAnimation.cs
- ListView.cs
- SecurityPermission.cs
- TriggerAction.cs
- MailDefinition.cs
- CodeTypeParameter.cs
- ContractMapping.cs
- XmlDataCollection.cs
- TextElementEnumerator.cs
- XomlCompilerResults.cs
- SerializationException.cs
- XmlSchemaAll.cs
- LocalizabilityAttribute.cs
- XpsS0ValidatingLoader.cs
- WebDisplayNameAttribute.cs
- UIElement3DAutomationPeer.cs
- HijriCalendar.cs
- AudioFileOut.cs
- ScaleTransform.cs
- XhtmlBasicSelectionListAdapter.cs
- ValidationRuleCollection.cs
- SessionSwitchEventArgs.cs
- HttpListener.cs
- Pkcs7Signer.cs
- DataGridColumnCollection.cs
- HandledEventArgs.cs
- SslStreamSecurityElement.cs
- RegexParser.cs
- DbParameterCollectionHelper.cs
- TextBox.cs
- Repeater.cs
- AggregateNode.cs
- ConfigXmlAttribute.cs
- HTTPNotFoundHandler.cs
- MorphHelper.cs
- PropertySegmentSerializationProvider.cs
- InstanceDataCollectionCollection.cs
- CounterCreationData.cs
- InternalCache.cs
- PlatformCulture.cs
- XmlLanguage.cs
- SqlAliaser.cs
- COM2PictureConverter.cs
- objectresult_tresulttype.cs
- DivideByZeroException.cs
- IImplicitResourceProvider.cs
- XDRSchema.cs
- LinkUtilities.cs
- CodeArrayIndexerExpression.cs
- XmlCompatibilityReader.cs
- Nullable.cs
- PlaceHolder.cs
- MimeFormatExtensions.cs
- Thread.cs
- ConfigurationValue.cs
- SqlRecordBuffer.cs
- ItemDragEvent.cs
- DynamicControl.cs
- DbParameterCollection.cs
- ContextBase.cs
- CharacterBuffer.cs
- WrapPanel.cs
- XMLUtil.cs
- SqlConnectionFactory.cs
- WsatServiceAddress.cs
- TimelineClockCollection.cs
- ActiveXSite.cs
- ColorConverter.cs
- StorageConditionPropertyMapping.cs
- BaseTemplatedMobileComponentEditor.cs
- Tablet.cs
- CaseExpr.cs
- EncodingInfo.cs
- TraversalRequest.cs
- ObjectDisposedException.cs
- DesignerDataSchemaClass.cs
- BindingContext.cs
- DataColumnSelectionConverter.cs
- BufferedConnection.cs