Verwalten von Synchronisierungslisten

Windows Medienwiedergabe 10 oder höher verwendet Wiedergabelisten zum Synchronisieren digitaler Mediendateien mit tragbaren Geräten. In diesem Abschnitt wird erläutert, wie Sie mit Synchronisierungslisten arbeiten.

Der Beispielcode in diesem Abschnitt verwendet zwei ListView-Steuerelemente zum Anzeigen von Informationen. Das erste ListView-Steuerelement (IDC_PLVIEW) zeigt alle Wiedergabelisten in der Windows Medienwiedergabe Bibliothek an, wobei Synchronisierungslisten zuerst angezeigt werden. Synchronisierungslisten für das aktuell ausgewählte Gerät werden mit einem Häkchen markiert und in der Synchronisierungsprioritätsreihenfolge sortiert. Alle anderen Wiedergabelisten werden deaktiviert. Das ListView-Steuerelement wurde für eine einzelne Auswahl konfiguriert. Die Reihenfolge der Wiedergabelisten im ListView-Steuerelement bestimmt ihre Synchronisierungspriorität. Der überprüfte Zustand einer einzelnen Wiedergabeliste bestimmt, ob es sich um eine Synchronisierungswiedergabeliste für das aktuell ausgewählte Gerät handelt.

Das zweite ListView-Steuerelement (IDC_MEDIAVIEW) zeigt die Medienelemente in der ausgewählten Wiedergabeliste an. Zwei zusätzliche Spalten zeigen Text an, der angibt, ob die digitale Mediendatei auf das Gerät kopiert wurde, und im Falle eines Fehlers, ob die Kopie fehlgeschlagen ist, weil die digitale Mediendatei nicht passte.

Im folgenden Beispielcode wird gezeigt, wie die ListView-Steuerelemente initialisiert werden:

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

Das folgende Array von Zeichenfolgen enthält die Namen der in den Beispielen verwendeten Synchronisierungsattribute:

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

Die folgende Membervariable enthält eine Wiedergabeliste mit allen Wiedergabelisten in der Windows Medienwiedergabe Bibliothek. Jede Wiedergabeliste wird als Medienelement dargestellt.

CComPtr<IWMPPlaylist> m_spPlaylist;

In den folgenden Abschnitten werden Beispielcode bereitgestellt:

Arbeiten mit tragbaren Geräten