Gestion des playlists de synchronisation

Lecteur multimédia Windows 10 ou version ultérieure utilise des playlists pour synchroniser des fichiers multimédias numériques avec des appareils portables. Cette section explique comment utiliser des playlists de synchronisation.

L’exemple de code de cette section utilise deux contrôles ListView pour afficher des informations. Le premier contrôle ListView (IDC_PLVIEW) affiche toutes les playlists de la bibliothèque Lecteur multimédia Windows, avec les playlists de synchronisation qui apparaissent en premier. Les playlists de synchronisation pour l’appareil actuellement sélectionné sont marquées par une coche et triées dans l’ordre de priorité de synchronisation. Toutes les autres playlists sont désactivées. Le contrôle ListView a été configuré pour une sélection unique. L’ordre des playlists dans le contrôle ListView détermine leur priorité de synchronisation. L’état vérifié d’une sélection individuelle détermine s’il s’agit d’une playlist de synchronisation pour l’appareil actuellement sélectionné.

Le deuxième contrôle ListView (IDC_MEDIAVIEW) affiche les éléments multimédias dans la sélection sélectionnée. Deux colonnes supplémentaires affichent du texte indiquant si le fichier multimédia numérique a été copié sur l’appareil et, en cas d’échec, si la copie a échoué parce que le fichier multimédia numérique n’est pas adapté.

L’exemple de code suivant montre comment les contrôles ListView sont initialisés :

STDMETHODIMP CSyncSettings::InitListView()
{
    m_hPlView = GetDlgItem(IDC_PLVIEW);
    m_hMediaView = GetDlgItem(IDC_MEDIAVIEW); 

    ATLASSERT(m_hPlView);
    ATLASSERT(m_hMediaView);

    // Sync playlist information.
    // Selection highlights all rows.
    // Show checkboxes.
    ListView_SetExtendedListViewStyleEx(m_hPlView, 0, LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);
   
    // Add headers.
    LVCOLUMN lvc;
    ZeroMemory(&lvc, sizeof(LVCOLUMN));
    lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; 
    lvc.iSubItem = 0;
    
    lvc.pszText = _T("Sync");
    lvc.cx = 40;
    ListView_InsertColumn(m_hPlView, lvc.iSubItem, &lvc);

    lvc.iSubItem++;
    lvc.pszText = _T("Playlist Name");
    lvc.cx = 300;
    ListView_InsertColumn(m_hPlView, lvc.iSubItem, &lvc); 

    // Media information.
    // Selection highlights all rows.
    ListView_SetExtendedListViewStyleEx(m_hMediaView, 0, LVS_EX_FULLROWSELECT);

    // Add headers
    ZeroMemory(&lvc, sizeof(LVCOLUMN));
    lvc.mask = LVCF_WIDTH | LVCF_TEXT | LVCF_SUBITEM; 
    lvc.iSubItem = 0;
    
    lvc.pszText = _T("Media name");
    lvc.cx = 150;
    ListView_InsertColumn(m_hMediaView, lvc.iSubItem, &lvc);

    lvc.iSubItem++;
    lvc.pszText = _T("On Device");
    lvc.cx = 69;
    ListView_InsertColumn(m_hMediaView, lvc.iSubItem, &lvc);  

    lvc.iSubItem++;
    lvc.pszText = _T("Fit?");
    lvc.cx = 40;
    ListView_InsertColumn(m_hMediaView, lvc.iSubItem, &lvc);  
   
    return S_OK;
}

Le tableau de chaînes suivant contient les noms des attributs de synchronisation utilisés dans les exemples :

static const TCHAR *g_szSyncAttributeNames[17] = {
        _T("Not used"), // Do not access this one.
        _T("Sync01"),
        _T("Sync02"),
        _T("Sync03"),
        _T("Sync04"),
        _T("Sync05"),
        _T("Sync06"),
        _T("Sync07"),
        _T("Sync08"),
        _T("Sync09"),
        _T("Sync10"),
        _T("Sync11"),
        _T("Sync12"),
        _T("Sync13"),
        _T("Sync14"),
        _T("Sync15"),
        _T("Sync16")};

La variable membre suivante contient une playlist contenant toutes les playlists de la bibliothèque Lecteur multimédia Windows. Chaque playlist est représentée en tant qu’élément multimédia.

CComPtr<IWMPPlaylist> m_spPlaylist;

Les sections suivantes fournissent un exemple de code :

Utilisation d’appareils portables