Trabajar con dispositivos portátiles
[La característica asociada a esta página, Reproductor multimedia de Windows SDK, es una característica heredada. Se ha reemplazado por MediaPlayer. MediaPlayer se ha optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer en lugar de Reproductor multimedia de Windows SDK, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
En esta sección se describe cómo usar un control ActiveX Reproductor multimedia de Windows remoto para trabajar con dispositivos portátiles.
En los ejemplos de código de esta sección se usan clases de Biblioteca de plantillas activas (ATL), como CComPtr.
Encabezados incluidos
Para usar el código de esta sección, incluya los siguientes encabezados:
#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <commctrl.h>
#include "wmp.h"
#include "wmpids.h"
Puntero IWMPPlayer
El puntero IWMPPlayer se almacena en una variable miembro.
CComPtr<IWMPPlayer> m_spPlayer;
Los dispositivos se almacenan en una matriz
El código de ejemplo tiene acceso a la siguiente variable miembro, que se va a declarar en el encabezado del proyecto:
IWMPSyncDevice **m_ppWMPDevices; // Points to the custom device array.
El recuento de dispositivos se almacena en una variable miembro.
int m_cDevices; // Count of devices.
Recuperación de un puntero de dispositivo
Un puntero a un dispositivo determinado se recupera a través de su índice de matriz mediante código similar al siguiente:
CComPtr<IWMPSyncDevice> spSyncDevice(m_ppWMPDevices[lIndex]);
Tenga en cuenta que el índice que se muestra en los ejemplos anteriores no es el índice de asociación para el dispositivo. Es el índice para el dispositivo en la matriz personalizada de dispositivos.
Limpieza
En los ejemplos se usa la siguiente función para liberar la memoria de la matriz de dispositivos y liberar los punteros de interfaz:
void CMainDlg::FreeDeviceArray()
{
if(m_ppWMPDevices)
{
for(long i = 0; i < m_cDevices; i++)
{
m_ppWMPDevices[i]->Release();
}
delete[] m_ppWMPDevices;
m_ppWMPDevices = NULL;
}
}
Los dispositivos se muestran en un cuadro de lista
La función GetSelectedDeviceIndex devuelve el índice del dispositivo que el usuario seleccionó en un cuadro de lista mediante el código siguiente:
long CMainDlg::GetSelectedDeviceIndex()
{
return (long)SendMessage(GetDlgItem(IDC_DEVICES), LB_GETCURSEL, 0, 0);
}
El estado de la interfaz de usuario se administra mediante una sola función
La función SetUIState administra la interfaz de usuario.
SetUIState(UIState
NewState, BOOL
bConnected)
Los detalles de esta función no son relevantes para las discusiones de esta sección, pero tenga en cuenta que esta función realiza tareas como habilitar o deshabilitar controles y cambiar el texto para mostrar en la interfaz de usuario.
La enumeración UIState se definió de la siguiente manera:
enum UIState
{
Partnership,
NoPartnership,
Synchronizing
};
El parámetro bConnected especifica si se debe configurar la interfaz de usuario para un dispositivo conectado (TRUE significa que el dispositivo está conectado). Los parámetros NewState y bConnected transmiten la información necesaria para que la función realice su trabajo.
En las secciones siguientes se proporcionan explicaciones del código de ejemplo:
- Enumeración de dispositivos
- Recuperación de atributos de dispositivo
- Mostrar el progreso de la sincronización
- Administración de listas de reproducción de sincronización
Temas relacionados
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de