Condividi tramite


Uso dei dispositivi portatili

[La funzionalità associata a questa pagina, Lettore multimediale Windows SDK, è una funzionalità legacy. È stato sostituito da MediaPlayer. MediaPlayer è stato ottimizzato per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer invece di Lettore multimediale Windows SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Questa sezione descrive come usare un controllo ActiveX remoto Lettore multimediale Windows per usare i dispositivi portatili.

Gli esempi di codice in questa sezione usano classi ATL (Active Template Library), ad esempio CComPtr.

Intestazioni incluse

Per usare il codice in questa sezione, includere le intestazioni seguenti:

#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <commctrl.h>
#include "wmp.h"
#include "wmpids.h"

Puntatore IWMPPlayer

Il puntatore IWMPPlayer viene archiviato in una variabile membro.

CComPtr<IWMPPlayer> m_spPlayer;

I dispositivi vengono archiviati in una matrice

Il codice di esempio accede alla variabile membro seguente, da dichiarare nell'intestazione del progetto:

IWMPSyncDevice **m_ppWMPDevices; // Points to the custom device array.

Il numero di dispositivi viene archiviato in una variabile membro.

int m_cDevices; // Count of devices.

Recupero di un puntatore del dispositivo

Un puntatore a un particolare dispositivo viene recuperato tramite il relativo indice di matrice usando codice simile al seguente:

CComPtr<IWMPSyncDevice> spSyncDevice(m_ppWMPDevices[lIndex]);

Si noti che l'indice illustrato negli esempi precedenti non è l'indice di partnership per il dispositivo. È l'indice del dispositivo nella matrice personalizzata di dispositivi.

Pulizia

Negli esempi viene usata la funzione seguente per liberare la memoria nella matrice di dispositivi e rilasciare i puntatori all'interfaccia:

void CMainDlg::FreeDeviceArray()
{
    if(m_ppWMPDevices)
    {
        for(long i = 0; i < m_cDevices; i++)
        {
            m_ppWMPDevices[i]->Release();
        }
 
        delete[] m_ppWMPDevices;
        m_ppWMPDevices = NULL;        
    }
}

I dispositivi vengono visualizzati in una casella di riepilogo

La funzione GetSelectedDeviceIndex restituisce l'indice del dispositivo selezionato dall'utente in una casella di riepilogo usando il codice seguente:

long CMainDlg::GetSelectedDeviceIndex()
{
    return (long)SendMessage(GetDlgItem(IDC_DEVICES), LB_GETCURSEL, 0, 0);
}

Lo stato dell'interfaccia utente è gestito da una singola funzione

La funzione SetUIState gestisce l'interfaccia utente.

SetUIState(UIState 
NewState, BOOL 
bConnected)

I dettagli di questa funzione non sono rilevanti per le discussioni in questa sezione, ma tenere presente che questa funzione esegue attività come l'abilitazione o la disabilitazione dei controlli e la modifica del testo visualizzato nell'interfaccia utente.

L'enumerazione UIState è stata definita come segue:

enum UIState
{
    Partnership,
    NoPartnership,
    Synchronizing
};

Il parametro bConnected specifica se configurare l'interfaccia utente per un dispositivo connesso (TRUE indica che il dispositivo è connesso). I parametri NewState e bConnected forniscono le informazioni necessarie per eseguire il lavoro della funzione.

Le sezioni seguenti forniscono spiegazioni del codice di esempio:

Guida al controllo del giocatore