Verwalten von Synchronisierungswiedergabelisten

Windows Media Player 10 oder höher verwendet Wiedergabelisten, um digitale Mediendateien mit portablen Geräten zu synchronisieren. In diesem Abschnitt wird erläutert, wie Sie mit Synchronisierungswiedergabelisten arbeiten.

Im Beispielcode in diesem Abschnitt werden zwei ListView-Steuerelemente verwendet, um Informationen anzuzeigen. Das erste ListView-Steuerelement (IDC _ PLVIEW) zeigt alle Wiedergabelisten in der bibliothek Windows Media Player an, wobei zuerst Synchronisierungswiedergabelisten angezeigt werden. Synchronisierungswiedergabelisten für das aktuell ausgewählte Gerät werden mit einem Häkchen markiert und in der Reihenfolge der Synchronisierungspriorität sortiert. Alle anderen Wiedergabelisten sind 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 Status 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 bei der Kopie ein Fehler aufgetreten ist, weil die digitale Mediendatei nicht passte.

Der folgende Beispielcode zeigt, 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 Zeichenfolgenarray enthält die Namen der Synchronisierungsattribute, die in den Beispielen verwendet werden:

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, die alle Wiedergabelisten in der bibliothek Windows Media Player enthält. Jede Wiedergabeliste wird als Medienelement dargestellt.

CComPtr<IWMPPlaylist> m_spPlaylist;

Die folgenden Abschnitte enthalten Beispielcode:

Arbeiten mit portablen Geräten