Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / WindowsListViewItemStartMenu.cs / 1305600 / WindowsListViewItemStartMenu.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // // Description: Win32 ListView Item proxy for the Start Menu. // The Start Menu has a special use of ListViews. The items in the // list are treated like menuitems. To expose this special behavor // data from MSAA is need. The Shell team has implemented a special // IAccessible to support the Sart Menu. // // History: // 2005/01/25 - [....] - Created // //--------------------------------------------------------------------------- using System; using System.ComponentModel; using System.Windows.Automation; using System.Windows.Automation.Provider; using System.Windows; using Accessibility; using MS.Win32; namespace MS.Internal.AutomationProxies { // This class will only change a couple of aspects of a ListViewItem. So derive from the ListViewItem to // retain the majority of the ListView item functionality. internal class ListViewItemStartMenu : ListViewItem { // ----------------------------------------------------- // // Constructors // //----------------------------------------------------- #region Constructors internal ListViewItemStartMenu(IntPtr hwnd, ProxyFragment parent, int item, IAccessible acc) : base (hwnd, parent, item) { // The items are zero based, i.e. the first listview item is item 0. The // zero item in MSAA is self, so need to add one to the item to get the // correct Accessible child. AccessibleRole role = Accessible.GetRole(acc, item + 1); // Normal Listview items should be of control type listitem. But // the Listview items in the Start Menu act like menuitems. Get the Role // from IAccessible interface implemented by the Shell team and set the // control type. if (role == AccessibleRole.MenuItem) { _cControlType = ControlType.MenuItem; } else { System.Diagnostics.Debug.Assert(false, "The listview item on the Start Menu has an unexpected IAccessible role!"); } } #endregion Constructos //------------------------------------------------------ // // Patterns Implementation // //----------------------------------------------------- #region ProxySimple Interface // Returns a pattern interface if supported. internal override object GetPatternProvider(AutomationPattern iid) { // Treate these listview 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. if (iid == InvokePattern.Pattern) { return this; } // return null; } // Process all the Logical and Raw Element Properties internal override object GetElementProperty(AutomationProperty idProp) { // Normal Listview items do not have a concept of an AccessKey. But // the Listview items in the Start Menu does. This information is // in the IAccessible interface implemented by the Shell team. if (idProp == AutomationElement.AccessKeyProperty) { // The IAccessible should be valid here since it is the cached value in ProxySimple. System.Diagnostics.Debug.Assert(AccessibleObject != null, "Failed to get a valid IAccessible!"); try { string key = AccessibleObject.get_accKeyboardShortcut(_item + 1); if (!string.IsNullOrEmpty(key)) { return ST.Get(STID.KeyAlt) + "+" + key; } } catch (Exception e) { if (Misc.IsCriticalException(e)) { throw; } } } else if (idProp == AutomationElement.HasKeyboardFocusProperty) { return IsFocused(); } return base.GetElementProperty(idProp); } #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
- PropertyGridEditorPart.cs
- PreProcessInputEventArgs.cs
- RayMeshGeometry3DHitTestResult.cs
- HttpCapabilitiesBase.cs
- DataGridViewBand.cs
- SqlCommand.cs
- ProcessHost.cs
- HttpCookiesSection.cs
- PerspectiveCamera.cs
- PowerStatus.cs
- SerialPort.cs
- BaseTemplateBuildProvider.cs
- SqlTrackingWorkflowInstance.cs
- OdbcErrorCollection.cs
- AlphabeticalEnumConverter.cs
- NullRuntimeConfig.cs
- TranslateTransform3D.cs
- DynamicDiscoSearcher.cs
- CodeCommentStatementCollection.cs
- MessageBox.cs
- MimeTypeMapper.cs
- ChangeConflicts.cs
- TextAdaptor.cs
- SynchronizationLockException.cs
- LinkAreaEditor.cs
- Wizard.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- ExpressionPrinter.cs
- SamlAudienceRestrictionCondition.cs
- TypeConverterAttribute.cs
- FieldInfo.cs
- UpdateException.cs
- CompilationSection.cs
- SpellerHighlightLayer.cs
- DependentTransaction.cs
- SimpleApplicationHost.cs
- WorkflowInstanceRecord.cs
- MessageDispatch.cs
- StrokeNodeOperations2.cs
- EventProviderWriter.cs
- CssTextWriter.cs
- HttpHandlerAction.cs
- TypeDescriptionProvider.cs
- Window.cs
- PTManager.cs
- Soap12ServerProtocol.cs
- Color.cs
- SineEase.cs
- SqlWriter.cs
- DrawingAttributesDefaultValueFactory.cs
- BitmapEffectGeneralTransform.cs
- SerializationFieldInfo.cs
- CngProvider.cs
- AdPostCacheSubstitution.cs
- UpdateTranslator.cs
- OracleBoolean.cs
- SettingsAttributeDictionary.cs
- TextDecorationCollection.cs
- SelectionRangeConverter.cs
- DSACryptoServiceProvider.cs
- Errors.cs
- BuildResult.cs
- RequestQueryParser.cs
- OdbcReferenceCollection.cs
- CfgRule.cs
- RectangleF.cs
- PropertyGeneratedEventArgs.cs
- RangeValuePattern.cs
- DataListCommandEventArgs.cs
- BadImageFormatException.cs
- InitializationEventAttribute.cs
- MailWebEventProvider.cs
- ThreadExceptionEvent.cs
- SerializerDescriptor.cs
- BuildManagerHost.cs
- TrackingParameters.cs
- TemplateParser.cs
- SkewTransform.cs
- TreeNodeBinding.cs
- PeerInvitationResponse.cs
- DriveInfo.cs
- GuidConverter.cs
- ReservationCollection.cs
- XamlTreeBuilder.cs
- AlignmentYValidation.cs
- ClickablePoint.cs
- ValidatorCollection.cs
- RadialGradientBrush.cs
- DesignerVerbCollection.cs
- OdbcReferenceCollection.cs
- EncoderParameters.cs
- PtsPage.cs
- LayoutEvent.cs
- XpsTokenContext.cs
- MimeXmlImporter.cs
- ServerValidateEventArgs.cs
- BasicCellRelation.cs
- DataKeyArray.cs
- RegexWorker.cs
- DataGridViewDataConnection.cs