同期プレイリストの管理

[このページWindows メディア プレーヤー SDK に関連付けられている機能は、レガシ機能です。 MediaPlayer に置き換わりました。 MediaPlayer は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能な場合は SDK ではなく MediaPlayerWindows メディア プレーヤー使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

Windows メディア プレーヤー 10 以降では、プレイリストを使用してデジタル メディア ファイルをポータブル デバイスと同期します。 このセクションでは、同期プレイリストを操作する方法について説明します。

このセクションのコード例では、2 つの ListView コントロールを使用して情報を表示します。 最初の ListView コントロール (IDC_PLVIEW) には、Windows メディア プレーヤー ライブラリ内のすべてのプレイリストが表示され、同期プレイリストが最初に表示されます。 現在選択されているデバイスの同期プレイリストは、チェックマークでマークされ、同期の優先順位で並べ替えられます。 他のすべてのプレイリストはオフになっています。 ListView コントロールは、単一選択用に構成されました。 ListView コントロール内のプレイリストの順序によって、同期の優先順位が決まります。 個々のプレイリストのチェックされた状態は、それが現在選択されているデバイスの同期プレイリストであるかどうかを決定します。

2 つ目の ListView コントロール (IDC_MEDIAVIEW) には、選択したプレイリスト内のメディア項目が表示されます。 2 つの追加列には、デジタル メディア ファイルがデバイスにコピーされたかどうかを示すテキストと、障害が発生した場合に、デジタル メディア ファイルが収まらなかったためにコピーが失敗したかどうかを示すテキストが表示されます。

次のコード例は、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;

次のセクションでは、コード例を示します。

ポータブル デバイスの操作