DirectShow (DX8) Player ProgressBar [Résolu]

Signaler
Messages postés
95
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
2 juin 2010
-
Messages postés
95
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
2 juin 2010
-
Bonjour à tous,

Pour les besoins d'un projet perso, j'ai un lecteur multi-format.
Pour jouer les fichiers, y a pas de problème, mais je calle sur la barre de positionnement.

J'ai donc une progressbar (standart, pour le moment) et je souhaiterais faire ceci :
1) La progressbar suive le positionnement du fichier joué
2) Lors d'un click sur la progressbar, le fichier lu va à la position cliquée.

Les variables utilisée sont :
- DSControle.Duration
- DSControle.CurrentPosition

Je remercie d'avance, toute personne qui m'apportera son aide, ses lumières ou même un début de piste quand à la manière de calculer cela.

FRaggy.

5 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Simple règle de trois

j'imagine que ton progressBar1.Max est bien initialisé (à DSControle.Duration)
reste a affecter DSControle.CurrentPosition, au lieu du Me.Caption dans mon code exemple.

dans ton MouseDown, ET dans ton MouseMove (si bouton pressé), fais ce genre de choses :

Private Sub ProgressBar1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
   If Button = vbLeftButton Then
       ChangeMediaPos x
   End If
End Sub<hr />
Private Sub ProgressBar1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
   If Button = vbLeftButton Then
       ChangeMediaPos x
   End If
End Sub<hr />
Private Sub ChangeMediaPos(ByVal x As Single)
Dim nValue As Single
   With ProgressBar1
       nValue = x * .Max / .Width
       If nValue > .Max Then
           .Value = .Max
       ElseIf nValue < .Min Then
           .Value = .Min
       Else
           .Value = nValue
       End If
       Me.Caption = .Value
   End With
End Sub , ----
By Renfield

++ l'ami

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
on pourrait aller encore plus loin en s'assurant que la progressbar a un longueur non nulle.
de plus, on pourrias prendre en compte dans le calcul, la taille des marges du controle ProgressBar...
Messages postés
95
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
2 juin 2010

J'ai pris le projet avec moi au boulot, mais impossible de travailler dessus, car il semblerait que le TreeView possède une licence (non trouvée sur la machine du boulot)
et donc impossible à tester ici.

Je regarde ca ce soir en rentrant, et je te fais savoir si ca marche ou pas ;-)

De toute manière, et comme d'habitude, merci Renfield ^^
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
le TreeView ? pas de license....


installes le SP6 de VB, ca devrais rouler,  àsupposer que ca vienne de là :/



http://www.microsoft.com/downloads/details.aspx?FamilyId=83BF08E6-012D-4DB2-8109-20C8D7D5C1FC&displaylang=fr






Renfield





Admin CodeS-SourceS

- MVP Visual Basic
Messages postés
95
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
2 juin 2010

Je confirme, la solution de Renfield fonctionne !
Il reste plus qu'a mettre un petit bouton et on aura une vraie-fausse barre de progression, de la lecture du fichier joué. Merci pour les solutions données.

FRaggy.