Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / WindowsToolbarItemAsMenuItem.cs / 1305600 / WindowsToolbarItemAsMenuItem.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Some applications implement menus with toolbars. This proxy // will used the IAccessible to expose these toolbar items as // menu items. This proxy is derived from ToolbarItem since // the underlying control really is a toolbar and ToolbarItem // knows how to communicate with a toolbars to get information for // toolbar items already. // // History: // 01/31/2005 : [....] Created //--------------------------------------------------------------------------- using System; using System.Windows.Automation; using MS.Win32; namespace MS.Internal.AutomationProxies { class ToolbarItemAsMenuItem : ToolbarItem { // ----------------------------------------------------- // // Constructors // // ----------------------------------------------------- #region Constructors internal ToolbarItemAsMenuItem(IntPtr hwnd, ProxyFragment parent, int item, int idCommand, Accessible acc) : base(hwnd, parent, item, idCommand) { _acc = acc; // Set the control type based on the IAccessible role. AccessibleRole role = acc.Role; if (role == AccessibleRole.MenuItem) { _cControlType = ControlType.MenuItem; } else { System.Diagnostics.Debug.Assert(false, "Unexpected role " + role); } // MenuItems are by default KeyboardFocusable. _fIsKeyboardFocusable = true; } #endregion // ------------------------------------------------------ // // Patterns Implementation // // ----------------------------------------------------- #region ProxySimple Interface // Returns a pattern interface if supported. internal override object GetPatternProvider (AutomationPattern iid) { // Treate these toolbar items as menuitems and only support Invoke or Expand/Collapse patterns. // Invoke Pattern needs to be supported when the item has no children. When the item does have // children it needs to support ExpandCollapse Pattern. // Check if button is a separator if (IsSeparator()) { return null; } // Check if button is disabled if (Misc.ProxySendMessageInt(_hwnd, NativeMethods.TB_ISBUTTONENABLED, new IntPtr(_idCommand), IntPtr.Zero) == 0) { return null; } // Check if button is hidden if (Misc.ProxySendMessageInt(_hwnd, NativeMethods.TB_ISBUTTONHIDDEN, new IntPtr(_idCommand), IntPtr.Zero) != 0) { return null; } // if (iid == InvokePattern.Pattern) { // button is enabled and not hidden and not a separator return this; } // return null; } // Process all the Element Properties internal override object GetElementProperty(AutomationProperty idProp) { if (idProp == AutomationElement.HasKeyboardFocusProperty) { return IsFocused(); } return base.GetElementProperty(idProp); } #endregion // ------------------------------------------------------ // // Private Fields // // ------------------------------------------------------ #region Private Fields Accessible _acc; #endregion } } // 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: Some applications implement menus with toolbars. This proxy // will used the IAccessible to expose these toolbar items as // menu items. This proxy is derived from ToolbarItem since // the underlying control really is a toolbar and ToolbarItem // knows how to communicate with a toolbars to get information for // toolbar items already. // // History: // 01/31/2005 : [....] Created //--------------------------------------------------------------------------- using System; using System.Windows.Automation; using MS.Win32; namespace MS.Internal.AutomationProxies { class ToolbarItemAsMenuItem : ToolbarItem { // ----------------------------------------------------- // // Constructors // // ----------------------------------------------------- #region Constructors internal ToolbarItemAsMenuItem(IntPtr hwnd, ProxyFragment parent, int item, int idCommand, Accessible acc) : base(hwnd, parent, item, idCommand) { _acc = acc; // Set the control type based on the IAccessible role. AccessibleRole role = acc.Role; if (role == AccessibleRole.MenuItem) { _cControlType = ControlType.MenuItem; } else { System.Diagnostics.Debug.Assert(false, "Unexpected role " + role); } // MenuItems are by default KeyboardFocusable. _fIsKeyboardFocusable = true; } #endregion // ------------------------------------------------------ // // Patterns Implementation // // ----------------------------------------------------- #region ProxySimple Interface // Returns a pattern interface if supported. internal override object GetPatternProvider (AutomationPattern iid) { // Treate these toolbar items as menuitems and only support Invoke or Expand/Collapse patterns. // Invoke Pattern needs to be supported when the item has no children. When the item does have // children it needs to support ExpandCollapse Pattern. // Check if button is a separator if (IsSeparator()) { return null; } // Check if button is disabled if (Misc.ProxySendMessageInt(_hwnd, NativeMethods.TB_ISBUTTONENABLED, new IntPtr(_idCommand), IntPtr.Zero) == 0) { return null; } // Check if button is hidden if (Misc.ProxySendMessageInt(_hwnd, NativeMethods.TB_ISBUTTONHIDDEN, new IntPtr(_idCommand), IntPtr.Zero) != 0) { return null; } // if (iid == InvokePattern.Pattern) { // button is enabled and not hidden and not a separator return this; } // return null; } // Process all the Element Properties internal override object GetElementProperty(AutomationProperty idProp) { if (idProp == AutomationElement.HasKeyboardFocusProperty) { return IsFocused(); } return base.GetElementProperty(idProp); } #endregion // ------------------------------------------------------ // // Private Fields // // ------------------------------------------------------ #region Private Fields Accessible _acc; #endregion } } // 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
- NonParentingControl.cs
- Reference.cs
- ByteConverter.cs
- CustomAttributeFormatException.cs
- XdrBuilder.cs
- XmlILTrace.cs
- IdentifierService.cs
- AssociationSetEnd.cs
- ShaderRenderModeValidation.cs
- BlurBitmapEffect.cs
- Span.cs
- ImmComposition.cs
- PresentationAppDomainManager.cs
- NavigationHelper.cs
- DocumentApplicationJournalEntry.cs
- NamedElement.cs
- SiteMapSection.cs
- SqlDataSourceTableQuery.cs
- SemanticAnalyzer.cs
- TypeValidationEventArgs.cs
- StaticFileHandler.cs
- SinglePageViewer.cs
- Keywords.cs
- CacheMemory.cs
- TcpClientCredentialType.cs
- TableCellCollection.cs
- Pointer.cs
- GridViewUpdateEventArgs.cs
- Membership.cs
- Debugger.cs
- COM2ColorConverter.cs
- ToolStripDropDownClosedEventArgs.cs
- Crc32.cs
- StylusEditingBehavior.cs
- CombinedGeometry.cs
- Qualifier.cs
- XmlLoader.cs
- SafeBitVector32.cs
- CngAlgorithm.cs
- TypeTypeConverter.cs
- ServiceHostingEnvironment.cs
- WebReference.cs
- ClosableStream.cs
- DataBoundControl.cs
- Header.cs
- TraceFilter.cs
- BasicViewGenerator.cs
- RadioButton.cs
- SectionInformation.cs
- InteropEnvironment.cs
- DllNotFoundException.cs
- DragDrop.cs
- InputLangChangeRequestEvent.cs
- RequestQueue.cs
- MenuRendererStandards.cs
- XmlParser.cs
- SafeNativeMethods.cs
- SynchronizingStream.cs
- SecurityHeaderTokenResolver.cs
- TextOnlyOutput.cs
- XmlStreamStore.cs
- EntityViewGenerator.cs
- UpdatePanelControlTrigger.cs
- ipaddressinformationcollection.cs
- SqlDataSourceSelectingEventArgs.cs
- PageThemeCodeDomTreeGenerator.cs
- RNGCryptoServiceProvider.cs
- ColumnResult.cs
- DataObjectFieldAttribute.cs
- TrackingRecord.cs
- PeekCompletedEventArgs.cs
- CollectionViewProxy.cs
- AuthenticateEventArgs.cs
- WebDescriptionAttribute.cs
- ByteAnimationUsingKeyFrames.cs
- ExpressionBuilder.cs
- TypeExtensions.cs
- GregorianCalendarHelper.cs
- MediaTimeline.cs
- EmptyCollection.cs
- XmlAtomicValue.cs
- _NegoState.cs
- ParagraphResult.cs
- EdmItemCollection.cs
- CellPartitioner.cs
- OdbcInfoMessageEvent.cs
- SqlDataSource.cs
- ToolStripItemRenderEventArgs.cs
- HttpHandlerAction.cs
- WebPartHelpVerb.cs
- StaticFileHandler.cs
- UpdateTranslator.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- BridgeDataRecord.cs
- BamlLocalizer.cs
- KnownBoxes.cs
- OdbcConnectionStringbuilder.cs
- altserialization.cs
- Literal.cs
- PackageRelationshipCollection.cs