使用可攜式裝置
[與此頁面相關聯的功能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 表示裝置已連線) 。 NewState和bConnected參數會傳達函式執行其工作所需的資訊。
下列各節提供範例程式碼的說明:
相關主題
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應