Administrar listas de reproducción de sincronización

[La característica asociada a esta página, Reproductor multimedia de Windows SDK, es una característica heredada. Se ha reemplazado por MediaPlayer. MediaPlayer se ha optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer en lugar de Reproductor multimedia de Windows SDK, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

Reproductor multimedia de Windows 10 o posterior usa listas de reproducción para sincronizar archivos multimedia digitales con dispositivos portátiles. En esta sección se explica cómo trabajar con listas de reproducción de sincronización.

El código de ejemplo de esta sección usa dos controles ListView para mostrar información. El primer control ListView (IDC_PLVIEW) muestra todas las listas de reproducción de la biblioteca de Reproductor multimedia de Windows, con listas de reproducción de sincronización que aparecen primero. Las listas de reproducción de sincronización para el dispositivo seleccionado actualmente se marcan con una marca de verificación y se ordenan en orden de prioridad de sincronización. Todas las demás listas de reproducción están desactivadas. El control ListView se configuró para una selección única. El orden de las listas de reproducción en el control ListView determina su prioridad de sincronización. El estado activado de una lista de reproducción individual determina si es una lista de reproducción de sincronización para el dispositivo seleccionado actualmente.

El segundo control ListView (IDC_MEDIAVIEW) muestra los elementos multimedia en la lista de reproducción seleccionada. Dos columnas adicionales muestran texto que indica si el archivo multimedia digital se copió en el dispositivo y, en caso de error, si se produjo un error en la copia porque el archivo multimedia digital no se ajustaba.

En el código de ejemplo siguiente se muestra cómo se inicializan los controles ListView:

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;
}

La siguiente matriz de cadenas contiene los nombres de los atributos de sincronización usados en los ejemplos:

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 siguiente variable miembro contiene una lista de reproducción que contiene todas las listas de reproducción de la biblioteca de Reproductor multimedia de Windows. Cada lista de reproducción se representa como un elemento multimedia.

CComPtr<IWMPPlaylist> m_spPlaylist;

En las secciones siguientes se proporciona código de ejemplo:

Trabajar con dispositivos portátiles