Управление списками воспроизведения синхронизации
Медиаплеер Windows 10 или более поздних версий использует списки воспроизведения для синхронизации цифровых файлов мультимедиа с переносными устройствами. В этом разделе объясняется, как работать с списками воспроизведения синхронизации.
В примере кода в этом разделе используются два элемента управления ListView для отображения информации. Первый элемент управления ListView (IDC_PLVIEW) отображает все списки воспроизведения в библиотеке Медиаплеер Windows с первым отображением списков воспроизведения синхронизации. Списки воспроизведения синхронизации для выбранного устройства помечаются галочкой и сортируются в порядке приоритета синхронизации. Все остальные списки воспроизведения сняты. Элемент управления ListView настроен для выбора одного элемента управления. Порядок списков воспроизведения в элементе управления ListView определяет приоритет синхронизации. Проверенное состояние отдельного списка воспроизведения определяет, является ли он списком воспроизведения синхронизации для выбранного в данный момент устройства.
Второй элемент управления ListView (IDC_MEDIAVIEW) отображает элементы мультимедиа в выбранном списке воспроизведения. Два дополнительных столбца отображают текст, указывающий, был ли скопирован файл цифрового мультимедиа на устройство и в случае сбоя, был ли сбой копирования, так как файл цифрового носителя не соответствует.
В следующем примере кода показано, как инициализированы элементы управления 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. Каждый список воспроизведения представлен в виде элемента мультимедиа.
CComPtr<IWMPPlaylist> m_spPlaylist;
В следующих разделах приведен пример кода:
- Перечисление списков воспроизведения синхронизации
- Сортировка списков воспроизведения по приоритету синхронизации
- Перечисление элементов мультимедиа
- Определение состояния синхронизации списка воспроизведения
- Изменение приоритета синхронизации
Связанные темы