Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / UIAutomation / 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 : 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. //---------------------------------------------------------------------------- // //// 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
- ControlPropertyNameConverter.cs
- BindingsCollection.cs
- XmlCompatibilityReader.cs
- SHA256Cng.cs
- ColumnMap.cs
- glyphs.cs
- GraphicsPathIterator.cs
- DSASignatureFormatter.cs
- HtmlTableCell.cs
- ExecutionEngineException.cs
- ObjectStateEntryDbDataRecord.cs
- QEncodedStream.cs
- RecordsAffectedEventArgs.cs
- SymbolDocumentInfo.cs
- SqlTransaction.cs
- NamespaceQuery.cs
- ReverseInheritProperty.cs
- ControlParameter.cs
- ColorConverter.cs
- ToolStripCodeDomSerializer.cs
- SmtpReplyReaderFactory.cs
- ExportOptions.cs
- SecurityTimestamp.cs
- RuntimeEnvironment.cs
- SingleStorage.cs
- NavigationPropertyEmitter.cs
- BitmapInitialize.cs
- Point3DCollection.cs
- OptimizerPatterns.cs
- SizeValueSerializer.cs
- ConnectionPoolManager.cs
- ComplexBindingPropertiesAttribute.cs
- DiagnosticTrace.cs
- SecurityException.cs
- StringConcat.cs
- FileSecurity.cs
- CodeAttributeDeclarationCollection.cs
- DockAndAnchorLayout.cs
- RectangleGeometry.cs
- SqlConnectionString.cs
- NegatedCellConstant.cs
- PopupRoot.cs
- SspiSafeHandles.cs
- OSFeature.cs
- Adorner.cs
- FormsIdentity.cs
- HtmlToClrEventProxy.cs
- DataControlExtensions.cs
- ExpressionBuilder.cs
- TextBoxAutomationPeer.cs
- ObfuscateAssemblyAttribute.cs
- ViewStateException.cs
- Mapping.cs
- ThemeInfoAttribute.cs
- StreamWithDictionary.cs
- DecimalStorage.cs
- MappingItemCollection.cs
- OleDbParameter.cs
- ProfessionalColorTable.cs
- XmlByteStreamWriter.cs
- Attributes.cs
- RawMouseInputReport.cs
- Calendar.cs
- HtmlElement.cs
- TypeConstant.cs
- AssemblyAttributes.cs
- Atom10FormatterFactory.cs
- PreservationFileWriter.cs
- DataGridParentRows.cs
- EventToken.cs
- DesignBindingEditor.cs
- RuleSet.cs
- RtType.cs
- SocketElement.cs
- MetadataItemEmitter.cs
- TrackingWorkflowEventArgs.cs
- AudienceUriMode.cs
- SettingsPropertyValueCollection.cs
- AvtEvent.cs
- EncoderNLS.cs
- GridViewCancelEditEventArgs.cs
- HandleValueEditor.cs
- MessageQuerySet.cs
- _HelperAsyncResults.cs
- PartitionResolver.cs
- infer.cs
- FlowLayoutSettings.cs
- TypeElementCollection.cs
- ScrollBar.cs
- LocatorManager.cs
- BadImageFormatException.cs
- MediaPlayerState.cs
- DisplayInformation.cs
- X509ChainElement.cs
- DirectoryObjectSecurity.cs
- Parser.cs
- ReaderWriterLockSlim.cs
- ClusterSafeNativeMethods.cs
- FixedSOMLineCollection.cs
- UnknownBitmapEncoder.cs