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 :
- Énumération des appareils
- Récupération des attributs d’appareil
- Affichage de la progression de la synchronisation
- Gestion des playlists de synchronisation
Rubriques connexes
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour