Utilisation d’appareils portables

[La fonctionnalité associée à cette page, Lecteur multimédia Windows SDK, 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 Lecteur multimédia Windows SDK, 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.]

Cette section explique comment utiliser un contrôle ActiveX Lecteur multimédia Windows distant pour travailler avec des appareils portables.

Les exemples de code de cette section utilisent des classes ATL (Active Template Library), telles que CComPtr.

En-têtes inclus

Pour utiliser le code de cette section, incluez les en-têtes suivants :

#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <commctrl.h>
#include "wmp.h"
#include "wmpids.h"

Pointeur IWMPPlayer

Le pointeur IWMPPlayer est stocké dans une variable membre.

CComPtr<IWMPPlayer> m_spPlayer;

Les appareils sont stockés dans un tableau

L’exemple de code accède à la variable membre suivante, à déclarer dans l’en-tête du projet :

IWMPSyncDevice **m_ppWMPDevices; // Points to the custom device array.

Le nombre d’appareils est stocké dans une variable membre.

int m_cDevices; // Count of devices.

Récupération d’un pointeur d’appareil

Un pointeur vers un appareil particulier est récupéré via son index de tableau à l’aide d’un code similaire à ce qui suit :

CComPtr<IWMPSyncDevice> spSyncDevice(m_ppWMPDevices[lIndex]);

Notez que l’index indiqué dans les exemples précédents n’est pas l’index de partenariat pour l’appareil. Il s’agit de l’index de l’appareil dans le tableau personnalisé d’appareils.

Nettoyage

Les exemples utilisent la fonction suivante pour libérer la mémoire dans le tableau d’appareils et libérer les pointeurs d’interface :

void CMainDlg::FreeDeviceArray()
{
    if(m_ppWMPDevices)
    {
        for(long i = 0; i < m_cDevices; i++)
        {
            m_ppWMPDevices[i]->Release();
        }
 
        delete[] m_ppWMPDevices;
        m_ppWMPDevices = NULL;        
    }
}

Les appareils sont affichés dans une zone de liste

La fonction GetSelectedDeviceIndex retourne l’index de l’appareil sélectionné par l’utilisateur dans une zone de liste à l’aide du code suivant :

long CMainDlg::GetSelectedDeviceIndex()
{
    return (long)SendMessage(GetDlgItem(IDC_DEVICES), LB_GETCURSEL, 0, 0);
}

L’état de l’interface utilisateur est géré par une fonction unique

La fonction SetUIState gère l’interface utilisateur.

SetUIState(UIState 
NewState, BOOL 
bConnected)

Les détails de cette fonction ne sont pas pertinents pour les discussions de cette section, mais sachez que cette fonction effectue des tâches telles que l’activation ou la désactivation des contrôles et la modification du texte d’affichage dans l’interface utilisateur.

L’énumération UIState a été définie comme suit :

enum UIState
{
    Partnership,
    NoPartnership,
    Synchronizing
};

Le paramètre bConnected spécifie s’il faut configurer l’interface utilisateur d’un appareil connecté (TRUE signifie que l’appareil est connecté). Les paramètres NewState et bConnected transmettent les informations nécessaires à la fonction pour effectuer son travail.

Les sections suivantes fournissent des explications sur l’exemple de code :

Guide de contrôle du lecteur