UN BOUTON AVEC DES EFFETS SONORS

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 2 janv. 2006 à 23:36
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 11 janv. 2006 à 12:39
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35381-un-bouton-avec-des-effets-sonors

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
11 janv. 2006 à 12:39
au temps pour moi, c'est exact (si partant d'un fichier)
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016
11 janv. 2006 à 11:42
"pour le Gif, VB sais les afficher (sans transparence)..."

Non non moi j'ai la transparence.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 janv. 2006 à 12:11
chemin relatif, il se peux que cela fonctionne avec certaines fonctions....
(c'est du bricolage)

pour le Gif, VB sais les afficher (sans transparence)...
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016
10 janv. 2006 à 11:50
"VB ne gère pas nativement la transparence des Gifs"

Si du moins chez moi (Picturebox et Image et form et sans doute tous les autres). J'utilise VB6 SP6.

"pour revenir aux sons, je dis juste que si l'utilisateur, dans VB spécifie le chemin :
.\Data\Sounds\BtnOver.wav"

Je suppose que le .\ indique un chemin relatif. C'est une commande sque je ne connaissais pas. C'est pour ça que je ne comprenais pas. Merci.

Bon faut que j'aille au boulot. A+
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 janv. 2006 à 11:44
VB ne gère pas nativement la transparence des Gifs
ca n'est pas impossible a réaliser, loin de là... ma bonne raison est la flemme ^^

pour revenir aux sons, je dis juste que si l'utilisateur, dans VB spécifie le chemin :
.\Data\Sounds\BtnOver.wav

ton application doit le stocker ainsi...
et jouer :
LireWav App.Path & Mid$(m_SonOnMouseOver, 2)

de sorte que quel que soit le chemin de l'executable, si les sons sont bien placés, ils seront lus
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016
10 janv. 2006 à 11:32
Si tu es clair. Mais avec mon code je ne change le chemin que si l'utilisateur à laissé le nom par défaut. Si l'utilisateur change le nom alors c'est son chemin qui est pris. Le but c'est de permettre un son par défaut dans le répertoire de l'appli, ce sont s'appliquant à tous les boutons pour lesquels on ne fait rien (j'ai quand même maintenant rajouté une propriété silence).

J'essaye en même temps de rajouter à ce contrôle une image de fond. Dans ton bouton tu utilise la fonction Blit, ce qui te prive notamment de de la transparence GIF. Comme tu as surement une bonne raison peux-tu me la donner (la bonne raison) voire si je persiste.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 janv. 2006 à 11:22
tu y stocke la valeur saisie par l'utilisateur.
si tu la modifie, en la remplacant par une version, avec un chemin complet, ca fonctionnera, bien sur, mais si l'utilisateur distribue son application, avec ton OCX, le chemin ne sera plus dynamique, car stocké en dur, et aucun son ne sortira...

c'est un peu la même chose avec les couleurs...
quand l'utilisateur transmet une couleur systeme, il faut la traduire en couleur (RGB). Il ne faut pour autant pas modifier la propriété (BackColor, par exemple)

je sais pas si je suis très clair^^
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016
10 janv. 2006 à 10:23
"il ne faut pas ici modifier m_SonOnMouseOver"

Pourquoi ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
9 janv. 2006 à 12:40
le mieux serait un truc du genre :

if left$(m_SonOnMouseOver,1) = "." Then
LireWav App.Path & Mid$(m_SonOnMouseOver, 2)
Else
LireWav m_SonOnMouseOver
End If

*LireWav est là pour l'exemple, il ne faut pas ici modifier m_SonOnMouseOver
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016
9 janv. 2006 à 12:08
Salut,

Pour éviter le problème du path, j'avais mis ces 2 lignes (impossible d'utiliser app.pathe dans les déclarations). Ca ne marche visiblement pas chez vous mais ça fait quoi ? C'est à l'initialisation ? ou au moment de jouer le son ? A aucun moment je ne définit le chemin ? Pourquoi le mémorise-t-il dans l'éxécutable ?

If m_SonOnMouseOver "OverDefaut.wav" Then m_SonOnMouseOver App.Path & "\OverDefaut.wav"
If m_SonOnClick "ClickDefaut.wav" Then m_SonOnClick App.Path & "\ClickDefaut.wav"
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016
4 janv. 2006 à 12:51
Bon je vais essayer d'assimiler tout ça et de corriger. Merci.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 janv. 2006 à 15:45
*app.path : je ne vois pas comment mieux expliquer....
tu ne dois pas chercher le son juste avec son nom (clickdefaut.wav) mais précédé de son chemin, qui lui sera différent sur quasiment chaque PC...
l'erreur est dans les InitProperties, ReadProperties et WriteProperties
une possibilité est de faire un enum (0 rien, 1 click, 2 = over) et selon cet enum, tu choisis le chemin

*lagg : comme tu lis "synchro", l'API prend la main, c'est à dire que pendant qu'elle joue le son (trouvé ou non), elle empêche le reste, à savoir par exemple les effets MouseOver, etc...

*NoSound : c'est justement pour ne pas entendre ce Beep d'erreur

perso je déclare :
Private Const SND_FILENAME = &H20000 ' name is a file name
Private Const SND_ASYNC = &H1 ' play asynchronously
Private Const SND_NODEFAULT = &H2 ' silence not default, if sound not found


puis une perso (pour la lisibilité)
Private Const SND_PERSONNAL = (SND_FILENAME Or SND_ASYNC Or SND_NODEFAULT)

et c'est ensuite ce dernier Flag pour jouer le son
sndPlaySound m_SonOnMouseOver, SND_PERSONNAL
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 janv. 2006 à 12:18
ce que veux dre pcpt, c'est que les sons sont :

D:\4 Programation\Divers Visual\Contrles\autres bouttons\ClickDefaut.wav

en gros, si on n'a pas la même arborescence, impossible d'entendre la moindre note...
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016
3 janv. 2006 à 11:27
"dur d'évaluer le travail réel (puisque départ existant)"

La note je m'en tape (même si elle fait plaisir quand elle est bonne). Je publie mon travail pour remercier tout ceux qui publie le leur. Je suis un farouche défenseur du libre.
cs_VinceVG Messages postés 221 Date d'inscription mercredi 8 septembre 2004 Statut Membre Dernière intervention 30 mars 2016
3 janv. 2006 à 11:25
Le vertical existait avant. Je me suis contenté du rajouter le son.

"manque App.Path à l'init, donc chemin forcément faux"
Tu peux préciser STP je n'ai pas de problème moi.

"il faut gérer un Asynchrone (sinon effet de lagg affreux)"
C'est quoi effet de lagg.

"aussi un NoSound"
Où ? Moi quand il ne trouve pas le fichier son il me fait un beep par défaut.

En tout cas merci de tes commentaires.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
2 janv. 2006 à 23:36
salut,
pas mal la verticale....
dur d'évaluer le travail réel (puisque départ existant). problèmes :
1* manque App.Path à l'init, donc chemin forcément faux.
2* les Flags de son sont incorrects. il faut gérer un Asynchrone (sinon effet de lagg affreux) et aussi un NoSound (ou NoBeep, je ne sais plus) pour ne pas avoir d'erreur en cas de fichier introuvable
(pas noté)
PCPT [AFCK]