Automatisation de la lecture pour MCIWnd
[La fonctionnalité associée à cette page, classe de fenêtre MCIWnd, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer. MediaPlayer a été optimisé pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer au lieu de la classe de fenêtre MCIWnd, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Vous pouvez automatiser la lecture pour MCIWnd en spécifiant certains styles de fenêtre dans la fonction MCIWndCreate . Pour lire l’appareil, la fenêtre a besoin d’une fenêtre parente pour traiter les messages de notification, d’une zone de lecture pour lire les fichiers AVI et de notification des modifications du mode de l’appareil pour identifier quand la lecture s’arrête. La fenêtre n’a pas besoin d’une barre d’outils. Vous pouvez définir ces caractéristiques en spécifiant les styles appropriés dans MCIWndCreate.
L’exemple suivant utilise des commandes de menu pour créer une fenêtre MCIWnd afin de lire du contenu à partir de différents types d’appareils. La fonction MCIWndCreate crée la fenêtre MCIWnd, et les appareils et les fichiers sont chargés à l’aide de la macro MCIWndOpen dans les commandes spécifiques à l’appareil. Une fois la lecture terminée, vous fermez l’appareil en interceptant le message MCIWNDM_NOTIFYMODE et en émettant la macro MCIWndClose .
case WM_COMMAND:
switch (wParam)
{
case IDM_CREATEMCIWND:
dwMCIWndStyle = WS_CHILD | // child window
WS_VISIBLE | // visible
MCIWNDF_NOTIFYMODE | // notifies of mode changes
MCIWNDF_NOPLAYBAR; // hides toolbar
g_hwndMCIWnd = MCIWndCreate(hwnd,
g_hinst, dwMCIWndStyle, NULL);
break;
case IDM_PLAYCDA:
LoadNGoMCIWnd(hwnd, "CDAudio");
break;
case IDM_PLAYWAVE:
LoadNGoMCIWnd(hwnd, "SoundWave.WAV");
break;
case IDM_PLAYMIDI:
LoadNGoMCIWnd(hwnd, "MIDIFile.MID");
break;
case IDM_PLAYAVI:
LoadNGoMCIWnd(hwnd, "AVIFile.AVI");
break;
case IDM_EXIT:
MCIWndDestroy(g_hwndMCIWnd);
DestroyWindow(hwnd);
break;
}
break;
case MCIWNDM_NOTIFYMODE:
if (lParam == MCI_MODE_STOP) // device stopped
{
MessageBox(hwnd,"","Closing Device",MB_OK);
MCIWndClose(g_hwndMCIWnd);
}
break;
// Handle other messages here.
// LoadNGoMCIWnd - automatically loads and plays a multimedia device
//
// hwnd - handle to the parent window
// lpstr - pointer to device or filename played by device
//
// Global variable
// extern HINSTANCE g_hwndMCIWnd; instance handle to MCIWnd window
VOID LoadNGoMCIWnd(HWND hwnd, LPSTR lpstr)
{
MessageBox(hwnd, lpstr, "Loading Device", MB_OK);
MCIWndOpen(g_hwndMCIWnd, lpstr, NULL); // new device in window
MCIWndPlay(g_hwndMCIWnd); // plays device
}