管理同步處理播放清單

[與此頁面相關聯的功能Windows 媒體播放機 SDK是舊版功能。 MediaPlayer已取代它。 MediaPlayer已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用MediaPlayer,而不是Windows 媒體播放機 SDK。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

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;

下列各節提供範例程式碼:

使用可攜式裝置