WindowsProgressbar.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / AccessibleTech / longhorn / Automation / Win32Providers / MS / Internal / AutomationProxies / WindowsProgressbar.cs / 1 / WindowsProgressbar.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: HWND-based ProgressBar Proxy 
//
// History: 
//          [....].  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

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK