使用可攜式裝置

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

本節說明如何使用遠端Windows 媒體播放機 ActiveX 控制項來處理可攜式裝置。

本節中的程式碼範例會使用 Active Template Library (ATL) 類別,例如 CComPtr

內含標頭

若要使用本節中的程式碼,請包含下列標頭:

#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <commctrl.h>
#include "wmp.h"
#include "wmpids.h"

IWMPPlayer 指標

IWMPPlayer指標會儲存在成員變數中。

CComPtr<IWMPPlayer> m_spPlayer;

裝置會儲存在陣列中

範例程式碼會存取下列成員變數,以在專案標頭中宣告:

IWMPSyncDevice **m_ppWMPDevices; // Points to the custom device array.

裝置計數會儲存在成員變數中。

int m_cDevices; // Count of devices.

擷取裝置指標

使用類似下列程式碼的程式碼,擷取特定裝置的指標會透過其陣列索引擷取:

CComPtr<IWMPSyncDevice> spSyncDevice(m_ppWMPDevices[lIndex]);

請注意,上述範例中顯示的索引不是裝置的合作關係索引。 它是裝置自訂陣列中裝置的索引。

清理

這些範例會使用下列函式來釋放裝置陣列中的記憶體,並釋放介面指標:

void CMainDlg::FreeDeviceArray()
{
    if(m_ppWMPDevices)
    {
        for(long i = 0; i < m_cDevices; i++)
        {
            m_ppWMPDevices[i]->Release();
        }
 
        delete[] m_ppWMPDevices;
        m_ppWMPDevices = NULL;        
    }
}

裝置會顯示在清單方塊中

GetSelectedDeviceIndex 函式會使用下列程式碼傳回清單方塊中所選取使用者的裝置索引:

long CMainDlg::GetSelectedDeviceIndex()
{
    return (long)SendMessage(GetDlgItem(IDC_DEVICES), LB_GETCURSEL, 0, 0);
}

使用者介面狀態是由單一函式管理

SetUIState 函式會管理使用者介面。

SetUIState(UIState 
NewState, BOOL 
bConnected)

此函式的詳細資料與本節的討論無關,但請注意,此函式會執行啟用或停用控制項,以及變更使用者介面中的顯示文字等工作。

UIState 列舉的定義如下:

enum UIState
{
    Partnership,
    NoPartnership,
    Synchronizing
};

bConnected參數會指定是否設定連線裝置的使用者介面, (TRUE 表示裝置已連線) 。 NewStatebConnected參數會傳達函式執行其工作所需的資訊。

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

播放機控制指南