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
- HttpModuleAction.cs
- DocumentXmlWriter.cs
- KerberosSecurityTokenProvider.cs
- XmlDataFileEditor.cs
- SafeSerializationManager.cs
- Span.cs
- OdbcStatementHandle.cs
- SendDesigner.xaml.cs
- CustomAttributeBuilder.cs
- DispatchWrapper.cs
- ChannelAcceptor.cs
- ClassValidator.cs
- MessageHeaderException.cs
- JsonStringDataContract.cs
- Policy.cs
- IPAddressCollection.cs
- WebPartTransformerCollection.cs
- ResourceType.cs
- SystemParameters.cs
- XmlElementList.cs
- SplitterEvent.cs
- TextCharacters.cs
- LinqToSqlWrapper.cs
- ParserOptions.cs
- mda.cs
- ExpressionVisitor.cs
- ExternalException.cs
- DesignerInterfaces.cs
- HwndSourceParameters.cs
- CodeNamespaceImportCollection.cs
- TraceContext.cs
- CodeGroup.cs
- Win32SafeHandles.cs
- DataGridViewColumnHeaderCell.cs
- ForEach.cs
- GroupBoxAutomationPeer.cs
- ComPlusContractBehavior.cs
- DataContractSerializer.cs
- Number.cs
- DBDataPermission.cs
- XmlMapping.cs
- PenThreadWorker.cs
- X509UI.cs
- GroupByExpressionRewriter.cs
- FontStretchConverter.cs
- MembershipSection.cs
- XPathNodePointer.cs
- TargetException.cs
- DbProviderFactories.cs
- Pair.cs
- TimeStampChecker.cs
- PDBReader.cs
- WhitespaceSignificantCollectionAttribute.cs
- EdgeProfileValidation.cs
- RelOps.cs
- QueryContinueDragEvent.cs
- AuthenticationException.cs
- SoapSchemaExporter.cs
- SharedStatics.cs
- PriorityQueue.cs
- DefaultValueTypeConverter.cs
- ToolCreatedEventArgs.cs
- ServiceRoute.cs
- Misc.cs
- SafeNativeMethods.cs
- CollectionConverter.cs
- SqlResolver.cs
- VolatileEnlistmentState.cs
- MailAddress.cs
- Crc32.cs
- OdbcCommandBuilder.cs
- ToolStripRenderEventArgs.cs
- OutputCacheSection.cs
- StateWorkerRequest.cs
- CreateUserWizardStep.cs
- BlurBitmapEffect.cs
- XslCompiledTransform.cs
- EncodingStreamWrapper.cs
- ObjectPersistData.cs
- EventDescriptorCollection.cs
- PeerNearMe.cs
- BasicCellRelation.cs
- AssemblyCache.cs
- DataGridCaption.cs
- EntityDataSourceWrapper.cs
- AsyncCompletedEventArgs.cs
- Panel.cs
- PolicyChain.cs
- BufferModeSettings.cs
- SByteStorage.cs
- SpeechAudioFormatInfo.cs
- entitydatasourceentitysetnameconverter.cs
- CapabilitiesPattern.cs
- Vector.cs
- Misc.cs
- BaseServiceProvider.cs
- SoapSchemaImporter.cs
- EntityDataSourceWizardForm.cs
- MulticastNotSupportedException.cs
- CallbackValidatorAttribute.cs