管理同步播放列表

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;

以下部分提供示例代码:

使用可移植设备