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
- ArithmeticException.cs
- IList.cs
- ThemeDirectoryCompiler.cs
- ConfigurationStrings.cs
- ShutDownListener.cs
- MediaTimeline.cs
- StylusDownEventArgs.cs
- ToolBarDesigner.cs
- Substitution.cs
- XmlKeywords.cs
- StrongTypingException.cs
- ReferencedCollectionType.cs
- ValidationHelper.cs
- BrushMappingModeValidation.cs
- MappingModelBuildProvider.cs
- DataSvcMapFile.cs
- TableStyle.cs
- FamilyCollection.cs
- VariableAction.cs
- XslAstAnalyzer.cs
- XmlSerializerFactory.cs
- WizardForm.cs
- MsmqMessageProperty.cs
- SqlUtil.cs
- AsyncDataRequest.cs
- FontUnit.cs
- SizeFConverter.cs
- SerialPort.cs
- DashStyles.cs
- ApplicationSecurityInfo.cs
- DataPointer.cs
- EmptyControlCollection.cs
- ComNativeDescriptor.cs
- UnsafeNativeMethods.cs
- SchemaInfo.cs
- HScrollProperties.cs
- SecurityKeyIdentifier.cs
- AutomationElementCollection.cs
- PageHandlerFactory.cs
- InputQueue.cs
- MailAddress.cs
- StylusCollection.cs
- HandlerBase.cs
- ExceptionCollection.cs
- ProcessManager.cs
- MethodMessage.cs
- CodeDelegateInvokeExpression.cs
- LeaseManager.cs
- TimeoutHelper.cs
- MaskInputRejectedEventArgs.cs
- messageonlyhwndwrapper.cs
- ReferenceEqualityComparer.cs
- SourceFilter.cs
- Models.cs
- MatrixIndependentAnimationStorage.cs
- ServiceRouteHandler.cs
- SamlSecurityToken.cs
- ErrorFormatter.cs
- EdmComplexTypeAttribute.cs
- ContentHostHelper.cs
- filewebresponse.cs
- CompositeClientFormatter.cs
- UnSafeCharBuffer.cs
- Configuration.cs
- SqlDataSourceStatusEventArgs.cs
- WindowsRichEdit.cs
- MarshalByRefObject.cs
- DiagnosticsElement.cs
- XmlWriterTraceListener.cs
- InkCanvasSelectionAdorner.cs
- ReflectionUtil.cs
- OleDbRowUpdatingEvent.cs
- DataBoundControlActionList.cs
- MetafileHeaderWmf.cs
- ZipIORawDataFileBlock.cs
- Model3D.cs
- SecureUICommand.cs
- UpDownEvent.cs
- DataSourceConverter.cs
- XAMLParseException.cs
- StringFreezingAttribute.cs
- DataGridViewSelectedCellCollection.cs
- FormViewPageEventArgs.cs
- EmptyControlCollection.cs
- StylusShape.cs
- HandlerWithFactory.cs
- ProcessModelInfo.cs
- DownloadProgressEventArgs.cs
- RowParagraph.cs
- WindowsListViewItem.cs
- XamlToRtfParser.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- ActivityValidator.cs
- HttpPostedFileBase.cs
- PropertySourceInfo.cs
- CompilationRelaxations.cs
- OledbConnectionStringbuilder.cs
- EmptyEnumerator.cs
- ValidationErrorCollection.cs
- FloaterParaClient.cs