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
- NetworkCredential.cs
- TransactionFlowBindingElement.cs
- UnsafeNativeMethods.cs
- SectionInput.cs
- XmlSchemaObject.cs
- GenericQueueSurrogate.cs
- ValidationErrorCollection.cs
- PKCS1MaskGenerationMethod.cs
- _BasicClient.cs
- SolidColorBrush.cs
- Symbol.cs
- XmlILStorageConverter.cs
- IndexOutOfRangeException.cs
- ExtensionMethods.cs
- GlyphRun.cs
- EncryptedType.cs
- TypeConverters.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- SettingsContext.cs
- DebugView.cs
- AuthStoreRoleProvider.cs
- ConfigurationSection.cs
- SHA1Cng.cs
- TextHintingModeValidation.cs
- WizardForm.cs
- ConfigurationProperty.cs
- TableAdapterManagerMethodGenerator.cs
- Model3DGroup.cs
- TableItemStyle.cs
- baseshape.cs
- InputLanguage.cs
- ParamArrayAttribute.cs
- SoapTypeAttribute.cs
- PaperSource.cs
- SmiSettersStream.cs
- SqlDataRecord.cs
- Visual3D.cs
- ProcessHostFactoryHelper.cs
- RequestedSignatureDialog.cs
- ColumnTypeConverter.cs
- Binding.cs
- SmtpCommands.cs
- unitconverter.cs
- LocalIdKeyIdentifierClause.cs
- SqlWebEventProvider.cs
- RectangleConverter.cs
- Stylesheet.cs
- DbCommandDefinition.cs
- ScopeCompiler.cs
- GlobalizationAssembly.cs
- CommentAction.cs
- SearchExpression.cs
- TimerElapsedEvenArgs.cs
- RecognizedWordUnit.cs
- NameObjectCollectionBase.cs
- ApplicationSecurityManager.cs
- ReadWriteSpinLock.cs
- SamlAdvice.cs
- LassoHelper.cs
- HtmlTableCell.cs
- DataServiceExpressionVisitor.cs
- ZoneButton.cs
- CharacterMetricsDictionary.cs
- BindingExpressionBase.cs
- InstanceNotFoundException.cs
- BitmapCodecInfo.cs
- DropTarget.cs
- MembershipUser.cs
- DataRecord.cs
- XMLUtil.cs
- EntityDesignerDataSourceView.cs
- BindToObject.cs
- LiteralControl.cs
- ValueProviderWrapper.cs
- XamlSerializationHelper.cs
- XmlSchemaProviderAttribute.cs
- CrossSiteScriptingValidation.cs
- HashSetDebugView.cs
- ChildDocumentBlock.cs
- TdsParserStateObject.cs
- DataGridViewComboBoxCell.cs
- PerspectiveCamera.cs
- HttpFileCollectionBase.cs
- NullableConverter.cs
- ISFClipboardData.cs
- Grant.cs
- ApplicationFileParser.cs
- KeyPressEvent.cs
- WebPartEditorOkVerb.cs
- DataSourceCache.cs
- DataServiceContext.cs
- BitmapSource.cs
- BitmapSourceSafeMILHandle.cs
- KeyboardEventArgs.cs
- ParentQuery.cs
- GeometryModel3D.cs
- ApplicationFileCodeDomTreeGenerator.cs
- FlowLayoutSettings.cs
- DataGridViewLayoutData.cs
- RegexCompilationInfo.cs