API ProgressBar (Source)

Iniciado por cobein, 28 Julio 2008, 14:31 PM

0 Miembros y 1 Visitante están viendo este tema.

cobein

Bueno, aca les dejo una mini clase para crear progressbars con API, es realmente simple pero viene bien cuando no queres incluir una referencia a los controles de VB por una simple barra de progreso.
Código (vb) [Seleccionar]


'---------------------------------------------------------------------------------------
' Module      : cProgBar
' DateTime    : 28/07/2008 09:23
' Author      : Cobein
' Mail        : cobein27@hotmail.com
' WebPage     : http://cobein27.googlepages.com/vb6
' Purpose     : Mini ProgressBar class
' Usage       : At your own risk
' Requirements: None
' Distribution: You can freely use this code in your own
'               applications, but you may not reproduce
'               or publish this code on any web site,
'               online service, or distribute as source
'               on any media without express permission.
'
' History     : 28/07/2008 First Cut....................................................
'---------------------------------------------------------------------------------------
Option Explicit

Private Const PROGRESS_CLASSA   As String = "msctls_progress32"

Private Const WS_VISIBLE        As Long = &H10000000
Private Const WS_CHILD          As Long = &H40000000

Private Const WM_USER           As Long = &H400
Private Const PBM_SETPOS        As Long = (WM_USER + 2)
Private Const PBS_SMOOTH        As Long = &H1
Private Const PBS_VERTICAL      As Long = &H4

Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExA" (ByVal dwExStyle As Long, ByVal lpClassName As String, ByVal lpWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Private c_lhWnd As Long
Private c_lVal  As Long

Public Function CreateProgBar( _
       ByVal lhWndOwner As Long, _
       ByVal Left As Long, _
       ByVal Top As Long, _
       ByVal Width As Long, _
       ByVal Heght As Long, _
       Optional ByVal bHorizontal As Boolean = True, _
       Optional ByVal bSmooth As Boolean = False) As Boolean

    Dim lFlag As Long
   
    lFlag = WS_CHILD Or WS_VISIBLE
    If Not bHorizontal Then lFlag = lFlag Or PBS_VERTICAL
    If bSmooth Then lFlag = lFlag Or PBS_SMOOTH
         
    If Not c_lhWnd = 0 Then Class_Terminate
       
    c_lhWnd = CreateWindowEx(0, PROGRESS_CLASSA, vbNullString, _
       lFlag, Left, Top, Width, Heght, _
       lhWndOwner, vbNull, App.hInstance, ByVal 0&)
       
    CreateProgBar = Not (c_lhWnd = 0)
End Function

Public Property Let Value(ByVal lVal As Long)
    If Not c_lhWnd = 0 Then
        c_lVal = lVal
        Call SendMessage(c_lhWnd, PBM_SETPOS, ByVal lVal, ByVal 0&)
    End If
End Property

Public Property Get Value() As Long
    Value = c_lVal
End Property

Private Sub Class_Initialize()
    '
End Sub

Private Sub Class_Terminate()
    If Not c_lhWnd = 0 Then
        Call DestroyWindow(c_lhWnd)
        c_lhWnd = 0
    End If
End Sub
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

naderST


seba123neo

Hola,bastante sencilla pero buena  :P
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

krackwar

Tu y tus codes .... me encantan!!!! muchas gracias por el code.
Mi blog
Bienvenido krackwar, actualmente tu puntuación es de 38 puntos y tu rango es Veteran.
El pollo número 1, es decir yo, (krackwar), adoro a Shaddy como a un dios.

el_c0c0

#4
.
'-     coco
"Te voy a romper el orto"- Las hemorroides

emperor

se ve muy bueno :o, pero como la uso  :-[?

seba123neo

Cita de: emperor se ve muy bueno :o, pero como la uso  :-[?

bue...aprende lo que es una clase primero y despues vemos...
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson