使用可攜式裝置

本節說明如何使用遠端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參數會傳達函式執行其工作所需的資訊。

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

播放機控制項指南