Управление списками воспроизведения синхронизации

проигрыватель Windows Media 10 или более поздней версии использует списки воспроизведения для синхронизации цифровых файлов мультимедиа с портативными устройствами. В этом разделе объясняется, как работать с списками воспроизведения синхронизации.

В примере кода в этом разделе для вывода информации используются два элемента управления ListView. первый элемент управления ListView (IDC _ плвиев) отображает все списки воспроизведения в библиотеке проигрыватель Windows Media, при этом первыми появляются списки воспроизведения синхронизации. Списки воспроизведения синхронизации для текущего выбранного устройства отмечены галочкой и сортируются в порядке приоритета синхронизации. Все остальные списки воспроизведения не отмечены флажками. Элемент управления ListView настроен для выбора только одного элемента. Порядок списков воспроизведения в элементе управления ListView определяет приоритет синхронизации. Состояние проверки отдельного списка воспроизведения определяет, является ли он списком синхронизации для текущего выбранного устройства.

Второй элемент управления ListView (IDC _ медиавиев) отображает элементы мультимедиа в выбранном списке воспроизведения. В двух дополнительных столбцах отображается текст, указывающий, был ли скопирован файл мультимедиа на устройство, и, в случае сбоя, неудачную попытку копирования из-за того, что файл цифрового мультимедиа не поместится.

В следующем примере кода показано, как инициализируются элементы управления 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;
}

Следующий массив строк содержит имена атрибутов синхронизации, используемых в примерах:

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

следующая переменная-член содержит список воспроизведения, содержащий все списки воспроизведения в библиотеке проигрыватель Windows Media. Каждый список воспроизведения представлен в виде элемента мультимедиа.

CComPtr<IWMPPlaylist> m_spPlaylist;

В следующих разделах приводится пример кода:

Работа с портативными устройствами