Работа с переносными устройствами
[Функция, связанная с этой страницей, Медиаплеер 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 передают сведения, необходимые для выполнения функции.
В следующих разделах приведены пояснения к примеру кода.
- Перечисление устройств
- Получение атрибутов устройства
- Отображение хода выполнения синхронизации
- Управление списками воспроизведения синхронизации
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по