Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / UIAutomation / Win32Providers / MS / Internal / AutomationProxies / WindowsProgressbar.cs / 1 / WindowsProgressbar.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
//
// Description: HWND-based ProgressBar Proxy
//
// History:
// Jean-Francois Peyroux. Created
//
//---------------------------------------------------------------------------
using System;
using System.Collections;
using System.Text;
using System.ComponentModel;
using System.Windows.Automation;
using System.Windows.Automation.Provider;
using System.Windows;
using MS.Win32;
namespace MS.Internal.AutomationProxies
{
class WindowsProgressBar: ProxyHwnd, IRangeValueProvider
{
// -----------------------------------------------------
//
// Constructors
//
// -----------------------------------------------------
#region Constructors
WindowsProgressBar (IntPtr hwnd, ProxyFragment parent, int item)
: base( hwnd, parent, item )
{
_cControlType = ControlType.ProgressBar;
// support for events
_createOnEvent = new WinEventTracker.ProxyRaiseEvents (RaiseEvents);
}
#endregion
#region Proxy Create
// Static Create method called by UIAutomation to create this proxy.
// returns null if unsuccessful
internal static IRawElementProviderSimple Create(IntPtr hwnd, int idChild, int idObject)
{
return Create(hwnd, idChild);
}
private static IRawElementProviderSimple Create(IntPtr hwnd, int idChild)
{
// Something is wrong if idChild is not zero
if (idChild != 0)
{
System.Diagnostics.Debug.Assert (idChild == 0, "Invalid Child Id, idChild != 0");
throw new ArgumentOutOfRangeException("idChild", idChild, SR.Get(SRID.ShouldBeZero));
}
return new WindowsProgressBar(hwnd, null, 0);
}
// Static Create method called by the event tracker system
// WinEvents are raise because items exist. So it makes sense to create the item and
// check for details afterward.
internal static void RaiseEvents (IntPtr hwnd, int eventId, object idProp, int idObject, int idChild)
{
if (idObject != NativeMethods.OBJID_VSCROLL && idObject != NativeMethods.OBJID_HSCROLL)
{
WindowsProgressBar wtv = new WindowsProgressBar (hwnd, null, 0);
wtv.DispatchEvents (eventId, idProp, idObject, idChild);
}
}
#endregion
//------------------------------------------------------
//
// Patterns Implementation
//
//-----------------------------------------------------
#region ProxySimple Interface
// Returns a pattern interface if supported.
internal override object GetPatternProvider (AutomationPattern iid)
{
return (iid == RangeValuePattern.Pattern) ? this : null;
}
#endregion
#region RangeValue Pattern
void IRangeValueProvider.SetValue (double val)
{
//This proxy is readonly
throw new InvalidOperationException(SR.Get(SRID.ValueReadonly));
}
// Request to get the value that this UI element is representing in a native format
double IRangeValueProvider.Value
{
get
{
return (double)ValuePercent;
}
}
bool IRangeValueProvider.IsReadOnly
{
get
{
return true;
}
}
double IRangeValueProvider.Maximum
{
get
{
return (double) 100;
}
}
double IRangeValueProvider.Minimum
{
get
{
return (double) 0;
}
}
double IRangeValueProvider.SmallChange
{
get
{
return Double.NaN;
}
}
double IRangeValueProvider.LargeChange
{
get
{
return Double.NaN;
}
}
#endregion
//------------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
#region Value pattern helper
private int ValuePercent
{
get
{
int cur = Misc.ProxySendMessageInt(_hwnd, NativeMethods.PBM_GETPOS, IntPtr.Zero, IntPtr.Zero);
int min = Misc.ProxySendMessageInt(_hwnd, NativeMethods.PBM_GETRANGE, new IntPtr(1), IntPtr.Zero);
int max = Misc.ProxySendMessageInt(_hwnd, NativeMethods.PBM_GETRANGE, IntPtr.Zero, IntPtr.Zero);
int actualCur = cur - min;
int range = max - min;
return ((range != 0) ? (int)((100 * actualCur + range / 2) / range) : 0);
}
}
#endregion
#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: HWND-based ProgressBar Proxy
//
// History:
// Jean-Francois Peyroux. Created
//
//---------------------------------------------------------------------------
using System;
using System.Collections;
using System.Text;
using System.ComponentModel;
using System.Windows.Automation;
using System.Windows.Automation.Provider;
using System.Windows;
using MS.Win32;
namespace MS.Internal.AutomationProxies
{
class WindowsProgressBar: ProxyHwnd, IRangeValueProvider
{
// -----------------------------------------------------
//
// Constructors
//
// -----------------------------------------------------
#region Constructors
WindowsProgressBar (IntPtr hwnd, ProxyFragment parent, int item)
: base( hwnd, parent, item )
{
_cControlType = ControlType.ProgressBar;
// support for events
_createOnEvent = new WinEventTracker.ProxyRaiseEvents (RaiseEvents);
}
#endregion
#region Proxy Create
// Static Create method called by UIAutomation to create this proxy.
// returns null if unsuccessful
internal static IRawElementProviderSimple Create(IntPtr hwnd, int idChild, int idObject)
{
return Create(hwnd, idChild);
}
private static IRawElementProviderSimple Create(IntPtr hwnd, int idChild)
{
// Something is wrong if idChild is not zero
if (idChild != 0)
{
System.Diagnostics.Debug.Assert (idChild == 0, "Invalid Child Id, idChild != 0");
throw new ArgumentOutOfRangeException("idChild", idChild, SR.Get(SRID.ShouldBeZero));
}
return new WindowsProgressBar(hwnd, null, 0);
}
// Static Create method called by the event tracker system
// WinEvents are raise because items exist. So it makes sense to create the item and
// check for details afterward.
internal static void RaiseEvents (IntPtr hwnd, int eventId, object idProp, int idObject, int idChild)
{
if (idObject != NativeMethods.OBJID_VSCROLL && idObject != NativeMethods.OBJID_HSCROLL)
{
WindowsProgressBar wtv = new WindowsProgressBar (hwnd, null, 0);
wtv.DispatchEvents (eventId, idProp, idObject, idChild);
}
}
#endregion
//------------------------------------------------------
//
// Patterns Implementation
//
//-----------------------------------------------------
#region ProxySimple Interface
// Returns a pattern interface if supported.
internal override object GetPatternProvider (AutomationPattern iid)
{
return (iid == RangeValuePattern.Pattern) ? this : null;
}
#endregion
#region RangeValue Pattern
void IRangeValueProvider.SetValue (double val)
{
//This proxy is readonly
throw new InvalidOperationException(SR.Get(SRID.ValueReadonly));
}
// Request to get the value that this UI element is representing in a native format
double IRangeValueProvider.Value
{
get
{
return (double)ValuePercent;
}
}
bool IRangeValueProvider.IsReadOnly
{
get
{
return true;
}
}
double IRangeValueProvider.Maximum
{
get
{
return (double) 100;
}
}
double IRangeValueProvider.Minimum
{
get
{
return (double) 0;
}
}
double IRangeValueProvider.SmallChange
{
get
{
return Double.NaN;
}
}
double IRangeValueProvider.LargeChange
{
get
{
return Double.NaN;
}
}
#endregion
//------------------------------------------------------
//
// Private Methods
//
//------------------------------------------------------
#region Private Methods
#region Value pattern helper
private int ValuePercent
{
get
{
int cur = Misc.ProxySendMessageInt(_hwnd, NativeMethods.PBM_GETPOS, IntPtr.Zero, IntPtr.Zero);
int min = Misc.ProxySendMessageInt(_hwnd, NativeMethods.PBM_GETRANGE, new IntPtr(1), IntPtr.Zero);
int max = Misc.ProxySendMessageInt(_hwnd, NativeMethods.PBM_GETRANGE, IntPtr.Zero, IntPtr.Zero);
int actualCur = cur - min;
int range = max - min;
return ((range != 0) ? (int)((100 * actualCur + range / 2) / range) : 0);
}
}
#endregion
#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
- _Events.cs
- HttpConfigurationContext.cs
- RectConverter.cs
- HtmlInputFile.cs
- documentsequencetextpointer.cs
- DetailsViewAutoFormat.cs
- SqlDataSourceCommandParser.cs
- ArcSegment.cs
- GeometryGroup.cs
- AliasedSlot.cs
- GeneratedView.cs
- ImageAnimator.cs
- HostingPreferredMapPath.cs
- XmlDocumentSerializer.cs
- DataSourceDescriptorCollection.cs
- Pkcs9Attribute.cs
- XmlDataImplementation.cs
- NonceToken.cs
- DataSourceExpression.cs
- ScriptHandlerFactory.cs
- TrackingProfile.cs
- FieldInfo.cs
- HttpDictionary.cs
- MetadataUtilsSmi.cs
- XmlBaseReader.cs
- WebServiceTypeData.cs
- AuthenticationServiceManager.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- SqlExpander.cs
- XsdValidatingReader.cs
- TrustManagerMoreInformation.cs
- ProtocolsConfiguration.cs
- VisualStyleTypesAndProperties.cs
- ComponentResourceKeyConverter.cs
- DragEvent.cs
- AtomMaterializer.cs
- WeakEventTable.cs
- ViewBase.cs
- SchemaLookupTable.cs
- BatchServiceHost.cs
- PropertyConverter.cs
- SpAudioStreamWrapper.cs
- SiteMapNode.cs
- WinEventHandler.cs
- TextContainerChangedEventArgs.cs
- DefaultTextStore.cs
- XmlUTF8TextReader.cs
- CompleteWizardStep.cs
- UnionExpr.cs
- ClickablePoint.cs
- CodeSubDirectoriesCollection.cs
- PathFigure.cs
- UserControlCodeDomTreeGenerator.cs
- IOThreadTimer.cs
- EmptyEnumerable.cs
- SoapSchemaMember.cs
- RegexBoyerMoore.cs
- IApplicationTrustManager.cs
- ScriptControl.cs
- HotCommands.cs
- AbstractDataSvcMapFileLoader.cs
- SystemMulticastIPAddressInformation.cs
- TextBoxAutomationPeer.cs
- CollectionChangedEventManager.cs
- HeaderedContentControl.cs
- DataPagerField.cs
- WeakReadOnlyCollection.cs
- SqlParameter.cs
- CompensationToken.cs
- WebBrowserProgressChangedEventHandler.cs
- PopupRootAutomationPeer.cs
- StylusShape.cs
- SecurityException.cs
- SchemaAttDef.cs
- Serializer.cs
- OdbcEnvironmentHandle.cs
- PropertyNames.cs
- InvalidDataContractException.cs
- WeakEventTable.cs
- LiteralTextContainerControlBuilder.cs
- ObjectStateEntry.cs
- XPathParser.cs
- ColorTranslator.cs
- RequestCacheValidator.cs
- CodeTypeDelegate.cs
- GenericIdentity.cs
- EncoderParameters.cs
- __ComObject.cs
- EntityDataSourceStatementEditorForm.cs
- ReachDocumentSequenceSerializerAsync.cs
- ToolStripSystemRenderer.cs
- PageThemeBuildProvider.cs
- AssemblyLoader.cs
- SvcFileManager.cs
- TemplateBuilder.cs
- JoinTreeSlot.cs
- XmlEntityReference.cs
- Parameter.cs
- CodeLabeledStatement.cs
- IndexerNameAttribute.cs