Работа с переносными устройствами

[Функция, связанная с этой страницей, Медиаплеер Windows sdk, является устаревшей функцией. Он был заменен MediaPlayer. MediaPlayer оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует по возможности использовать MediaPlayer вместо пакета SDK для Медиаплеер Windows. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

В этом разделе описывается использование удаленного элемента управления ActiveX Медиаплеер Windows для работы с переносными устройствами.

В примерах кода в этом разделе используются классы библиотеки активных шаблонов (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 передают сведения, необходимые для выполнения функции.

В следующих разделах приведены пояснения к примеру кода.

Руководство по управлению проигрывателем