DirectShow (DX8) Player ProgressBar

Résolu
cs_Fraggy Messages postés 95 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 2 juin 2010 - 30 mai 2007 à 09:54
cs_Fraggy Messages postés 95 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 2 juin 2010 - 30 mai 2007 à 20:41
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 mai 2007 à 10:51
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
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 mai 2007 à 10:55
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...
0
cs_Fraggy Messages postés 95 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 2 juin 2010
30 mai 2007 à 11:14
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 ^^
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 mai 2007 à 11:18
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Fraggy Messages postés 95 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 2 juin 2010
30 mai 2007 à 20:41
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.
0
Rejoignez-nous