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
- Rijndael.cs
- AnimationClock.cs
- RuleConditionDialog.Designer.cs
- CheckBoxList.cs
- ComProxy.cs
- WindowsTreeView.cs
- compensatingcollection.cs
- AttachedPropertyDescriptor.cs
- CapabilitiesState.cs
- BooleanConverter.cs
- XsdValidatingReader.cs
- ObjectDataSourceMethodEventArgs.cs
- UnionCodeGroup.cs
- Form.cs
- Qualifier.cs
- ModuleElement.cs
- Timeline.cs
- _KerberosClient.cs
- ParameterBinding.cs
- TargetException.cs
- Executor.cs
- TextDocumentView.cs
- _SSPIWrapper.cs
- IdentityHolder.cs
- HttpClientCertificate.cs
- XmlHierarchyData.cs
- ValidationPropertyAttribute.cs
- WizardPanelChangingEventArgs.cs
- KeyInfo.cs
- ApplicationSecurityInfo.cs
- AuthenticateEventArgs.cs
- WebPartAuthorizationEventArgs.cs
- ListViewTableRow.cs
- WorkflowElementDialogWindow.xaml.cs
- SqlAggregateChecker.cs
- BindingGroup.cs
- InkCanvasSelectionAdorner.cs
- PingReply.cs
- DictionaryEditChange.cs
- BehaviorEditorPart.cs
- CacheMemory.cs
- Atom10FormatterFactory.cs
- ExpressionConverter.cs
- OverloadGroupAttribute.cs
- DesignSurfaceManager.cs
- RepeaterItemCollection.cs
- Native.cs
- Timer.cs
- PasswordRecovery.cs
- EntityModelSchemaGenerator.cs
- COM2PictureConverter.cs
- FontSizeConverter.cs
- MeasurementDCInfo.cs
- safemediahandle.cs
- CornerRadius.cs
- Profiler.cs
- MissingMemberException.cs
- SafeNativeMethods.cs
- ThumbButtonInfoCollection.cs
- FrameworkContentElement.cs
- SafeWaitHandle.cs
- CodeArrayCreateExpression.cs
- COM2PropertyBuilderUITypeEditor.cs
- PropertyOrder.cs
- Int16AnimationBase.cs
- Encoder.cs
- VarRefManager.cs
- mediaeventargs.cs
- PtsHelper.cs
- CustomAttributeBuilder.cs
- rsa.cs
- PassportIdentity.cs
- PageContentAsyncResult.cs
- XmlSignatureManifest.cs
- ListChangedEventArgs.cs
- BindingCollection.cs
- TempEnvironment.cs
- DoubleCollection.cs
- LogicalExpr.cs
- HtmlLink.cs
- WebPartConnectionsConnectVerb.cs
- WebServiceMethodData.cs
- ValidationErrorCollection.cs
- BuildDependencySet.cs
- RowTypeElement.cs
- TypeInfo.cs
- OrderToken.cs
- DataFormats.cs
- IconHelper.cs
- MethodBody.cs
- FormsAuthenticationModule.cs
- DeferredBinaryDeserializerExtension.cs
- Menu.cs
- QuaternionRotation3D.cs
- XmlSerializableServices.cs
- DbBuffer.cs
- XmlIgnoreAttribute.cs
- FormCollection.cs
- TextRangeEditTables.cs
- ValuePattern.cs