I. Présentation ♪▲
MULTIMÉDIA MCI32 [MCI32.OCX]
Utilisation : Affichage et manipulation de fichiers multimédias
ÉDITEUR : Microsoft
Le contrôle MCI a été fourni avec toutes les versions de Visual Basic depuis la version 3.0
Ce contrôle sert à gérer différents périphériques multimédias comme les cartes son, les séquenceurs MIDI et les lecteurs de CD audio et de CD-ROM. Il peut aussi diffuser des fichiers au format audio Wave(.WAV), MIDI(.MID) et vidéo(.AVI)
|
Le contrôle MCI ressemble à un clavier de commande de magnétoscope. |
Pour que le contrôle MCI fonctionne parfaitement, les services appropriés de l'interface de Contrôle Multimédia (Services MCI) doivent être disponibles et être capable d'accéder au périphérique son, grâce au pilote spécifique installé sous Windows.
Extrait du code pour charger un fichier audio :
Private
Sub
Form_Load (
)
' Définit les propriétés nécessaires à l'ouverture du périphérique MCI.
MMControl1.Notify
=
FALSE
MMControl1.Wait
=
TRUE
MMControl1.Shareable
=
FALSE
MMControl1.DeviceType
=
"WaveAudio"
MMControl1.FileName
=
"C:\WINDOWS\MMDATA\GONG.WAV"
' Ouvre le périphérique MCI WaveAudio.
MMControl1.Command
=
"Open"
End
Sub
Les propriétés et événements spécifiques au contrôle MCI sont présentés dans les tableaux suivants.
Multimédia MCI, contrôle, constantes▲
Constantes du mode |
---|
Constante |
Valeur |
Description |
---|---|---|
mciModeNotOpen |
524 |
Périphérique non ouvert. |
mciModeStop |
525 |
Arrêt du périphérique. |
mciModePlay |
526 |
Lecture du périphérique. |
mciModeRecord |
527 |
Enregistrement du périphérique. |
mciModeSeek |
528 |
Recherche du périphérique. |
mciModePause |
529 |
Pause. |
mciModeReady |
530 |
Périphérique prêt. |
Constantes du mode |
---|
Constante |
Valeur |
Description |
---|---|---|
mciNotifySuccessful |
1 |
La commande a abouti. |
mciNotifySuperseded |
2 |
La commande a été annulée par une autre commande. |
mciAborted |
4 |
La commande a été annulée par l'utilisateur. |
mciFailure |
8 |
La commande a échoué. |
Constantes d'orientation |
---|
Constante |
Valeur |
Description |
---|---|---|
mciOrientHorz |
0 |
Boutons disposés horizontalement. |
mciOrientVert |
1 |
Boutons disposés verticalement. |
Constantes RecordMode |
---|
Constante |
Valeur |
Description |
---|---|---|
mciRecordInsert |
0 |
Insérer le mode d'enregistrement. |
mciRecordOverwrite |
1 |
Remplacer le mode d'enregistrement. |
Constantes Format |
---|
Constante |
Valeur |
Description |
---|---|---|
mciFormatMilliseconds |
0 |
Format millisecondes. |
mciFormatHms |
1 |
Format heures, secondes et minutes. |
mciFormatMsf |
2 |
Format minutes, secondes et images. |
mciFormatFrames |
3 |
Format images. |
mciFormatSmpte24 |
4 |
Format SMPTE 24 images. |
mciFormatSmpte25 |
5 |
Format SMPTE 25 images. |
mciFormatSmpte30 |
6 |
Format SMPTE 30 images. |
mciFormatSmpte30Drop |
7 |
Format SMPTE 30 images cibles. |
mciFormatBytes |
8 |
Format octets. |
mciFormatSamples |
9 |
Format échantillons. |
mciFormatTmsf |
10 |
Suit le format minutes, secondes et images. |
Lorsque j'ai décidé de construire ce Tutoriel autour du contrôle MCI, plusieurs choix s'offraient à moi, je pouvais avec toute la documentation en ma possession trouver les instructions afférentes à une application multimédia.
Mais… partant du principe qu'il ne faut pas refaire ce qui est déjà fait, je me suis posé la question à savoir si je ne pouvais pas trouver dans mes fonds de tiroir une application déjà toute faite.
J'ai trouvé en effet dans un programme écrit sous VB3.0 une application fonctionnant avec un contrôle MCI issu d'un fichier à extension .vbx !
Pour ceux qui suivent mes Tutoriels, j'ai évoqué précédemment une méthode pour convertir les applications fonctionnant sous 16 bits en applications 32 bits, j'ai donc pensé qu'il fallait essayer de mettre à profit les précieux conseils que je divulgue sans modération.
J'ai donc utilisé la méthode que je vous ai déjà indiquée et je n'ai trouvé qu'un seul problème au niveau d'un appel d' « API », je vous donne la modification que j'ai apportée afin de faire fonctionner ma feuille écrite sous VB3(16bits) en instructions pouvant être lues sous VB6.0.
Une vue de la démo du contrôle MCI que Vous pouvez télécharger ici! La zone d'image est tronquée sur ce cliché, mais elle existe et se trouve cachée par la bordure inférieure. On peut ne pas tenir compte de la zone d'image si on se contente d'utiliser la partie son du contrôle MCI |
Nous écrirons dans « Général » et « Déclarations » de la feuille « Form1 »
'BEGIN
Option
Explicit
'--------------------------------------------------
' Variables, constantes et déclarations utilisées dans la
' démo du contrôle Multimédia MCI
'--------------------------------------------------
' Stocke le Handle de fenêtre du contrôle d'image
' utilisé pour afficher les fichiers AVI (si vous voulez afficher des images)
Dim
HwndFrame As
Integer
' Récupère le Handle de fenêtre du contrôle d'image
'Private Declare Function GetFocus Lib "user" ( ) As Integer 'Déclaration d'origine
Ndla - Nous aurions pu ne pas tenir compte de cette déclaration si nous nous servons uniquement que de la partie son de cette application. Et voici le code que j'ai récupéré dans le fichier des API de Windows qui a une relation avec la fonction GetFocus qui se trouve dans le fichier DLL intitulé « User32 »
'Declare Function GetFocus Lib "user32" ( ) As Long
Je l'ai modifié en :
Private
Declare
Function
GetFocus Lib
"user32"
(
) As
Long
' Mémorise la largeur et la hauteur initiale de la fenêtre.
'La feuille ne peut être redimensionnée en dessous de ces valeurs.
Dim
MinWinWidth As
Integer
Dim
MinWinHeight As
Integer
' Color constants
Const
BLUE =
&
H800000
Const
RED =
&
H80&
Dans cette procédure j'ai modifié uniquement le code relatif à l'affichage des fichiers AVI Et j'ai traduit les commentaires en français. (Sur le module que vous téléchargerez, les commentaires seront en anglais, désolé !)
Private
Sub
GetNewFileName
(
AFile As
String
)
'--------------------------------------------------
' Utilise la boîte de dialogue standard du menu fichier pour chercher un nom de fichier
'--------------------------------------------------
Dim
Canceled As
Integer
Canceled =
False
On
Error
GoTo
GetNewFileName_Error
' Configure la boîte de dialogue fichier standard
CMDialog1.Filter
=
"Multimedia Files|*.wav;*.mid"
';*.avi Attention coder les extensions en minuscule
CMDialog1.DialogTitle
=
"Select Multimedia File"
CMDialog1.CancelError
=
True
' Ouvre la boîte de dialogue
CMDialog1.Action
=
1
If
Not
Canceled Then
AFile =
CMDialog1.FileName
Else
AFile =
""
End
If
Exit
Sub
'
GetNewFileName_Error:
Canceled =
True
Resume
Next
End
Sub
Les autres procédures sont identiques et ne demandent pas de modifications
Vous avez besoin du contrôle « MCI32.ocx » et du contrôle « Comdlg32.ocx » pour faire fonctionner cette application, ce dernier servant au fonctionnement des boîtes de dialogues sous Windows.
Pour que le module de démonstration fonctionne, vous devez créer un répertoire « Sons » à la racine de votre disque dur« C:\ » et insérer les fichiers sons qui figurent dans le fichier ZIP compressé qui accompagnent cet exposé.
Pour des raisons que j'ignore, j'ai pu constater que certains fichiers Wav ne pouvaient pas être lus par le contrôle MCI que ce soit sous plate forme16 bits ou indifféremment sous 32 bits.
J'attire votre attention sur le fait que lorsque vous allez lancer l'application « MciDemo » que vous allez télécharger, celle-ci va engendrer une erreur du genre :
|
Fenêtre d'erreur générée par |
Que nous dit ce fichier ?(mcidemo.log)
Ligne 18: La classe CommonDialog du contrôle CMDialog1 n'est pas une classe de contrôle chargée.
Ligne 31: La classe MMControl du contrôle MMControl1 n'est pas une classe de contrôle chargée.
Qu'est-ce que cela veut bien dire ?
Cela veut dire que cette feuille ayant été écrite avec une version précédente de VB et faisant appel à des DLL incompatibles(*.vbx) qui ne peuvent pas être lues par VB6.0, le système nous prévient d'une incompatibilité majeure et qu'il a été dans l'impossibilité de charger les contrôles sollicités par les appels aux DLL.
Charge à nous d'apporter les modifications nécessaires pour charger les contrôles adéquats qui rétabliront le bon fonctionnement de ce contrôle Multimédia.
Je vous laisse le soin de modifier en conséquence les instructions inopportunes ce qui à mon avis ne devrait pas vous poser de problème avec les explications que je vous ai données.
Je vous souhaite beaucoup de plaisir à réaliser cette application.
Prochain tutoriel▲
Les bases de la gestion de fichiers