使用可移植设备

[与此页面关联的功能(Windows 媒体播放器 SDK)是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer 而不是 Windows 媒体播放器 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

本部分介绍如何使用远程Windows 媒体播放器 ActiveX 控件来处理便携式设备。

本部分中的代码示例使用活动模板库 (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 参数传达函数完成其工作所需的信息。

以下部分提供了示例代码的说明:

玩家控制指南