Recupero dello stato di Burn

Nell'esempio di codice seguente vengono definiti i controlli della finestra di dialogo seguenti:

ID controllo Descrizione
IDC_BURN_STATE Testo statico che rappresenta lo stato dell'operazione di masterizzazione CD.
IDC_PROGRESS Barra di stato con un intervallo compreso tra 0 e 100 che rappresenta lo stato di avanzamento totale della bruciatura.
IDC_PROGRESS_TEXT Testo statico che rappresenta lo stato di avanzamento totale della bruciatura come numero compreso tra 0 e 100.
IDC_AVAILABLE_TIME Testo statico per visualizzare il tempo disponibile nel CD, in secondi.
IDC_FREE_SPACE Testo statico per visualizzare lo spazio libero nel CD, in byte.
IDC_TOTAL_SPACE Testo statico per visualizzare la capacità totale del CD, in byte.

 

È possibile monitorare lo stato di avanzamento dell'operazione di masterizzazione chiamando periodicamente IWMPCdromBurn::get_burnProgress mentre il CD viene bruciato. Questo metodo recupera un valore di stato per l'intera operazione di masterizzazione. Il valore recuperato è un numero che rappresenta la percentuale di masterizzazione completata, da 0 a 100.

// Update the progress bar IDC_PROGRESS
// and the corresponding text string IDC_PROGRESS_TEXT.
long lProgress = 0;
hr = m_spCdromBurn->get_burnProgress(&lProgress);
if (SUCCEEDED(hr))
{
    SendMessage(GetDlgItem(IDC_PROGRESS),
        PBM_SETPOS, lProgress, 0);
    SetDlgItemInt(IDC_PROGRESS_TEXT, lProgress);
}

È possibile ottenere lo stato corrente dell'operazione di combustione chiamando IWMPCdromBurn::get_burnState. Questo metodo recupera un'enumerazione che specifica l'operazione corrente eseguita.

// Retrieve the burn state.
WMPBurnState wmpbs = wmpbsUnknown;
HRESULT hr = m_spCdromBurn->get_burnState(&wmpbs);

if (SUCCEEDED(hr))
{
    // Set the burn state string.
    CComBSTR bstrState;
    switch (wmpbs)
    {
        case wmpbsUnknown:
        default:
            hr = bstrState.Append("Unknown state.");
            break;
        case wmpbsBusy:
            hr = bstrState.Append("Windows Media Player is Busy.");
            break;
        case wmpbsReady:
            hr = bstrState.Append("Ready to begin burning.");
            break;
        case wmpbsWaitingForDisc:
            hr = bstrState.Append("Waiting for disc.");
            break;
        case wmpbsRefreshStatusPending:
            hr = bstrState.Append("The burn playlist has changed.");
            m_spCdromBurn->refreshStatus();
            break;
        case wmpbsPreparingToBurn:
            hr = bstrState.Append("Preparing to burn the CD.");
            break;
        case wmpbsBurning:
            hr = bstrState.Append("The CD is being burned.");
            break;
        case wmpbsStopped:
            hr = bstrState.Append("The burning operation is stopped.");
            break;
        case wmpbsErasing:
            hr = bstrState.Append("Erasing the CD.");
            break;
    }
    if (SUCCEEDED(hr))
    {
        SetDlgItemTextW(IDC_BURN_STATE, bstrState.m_str);
    }
}

Per recuperare il numero di secondi di audio che il CD può contenere, chiamare IWMPCdromBurn::getItemInfo con "AvailableTime" come primo parametro. Il valore recuperato da questa funzione è rappresentato da una stringa.

// Set "AvailableTime" string
CComBSTR bstrTime;
CComBSTR bstrItem;
HRESULT hr = bstrItem.Append("AvailableTime");
if (SUCCEEDED(hr))
{
    hr = m_spCdromBurn->getItemInfo(bstrItem, &bstrTime);
}
if (SUCCEEDED(hr))
{
    hr = bstrTime.Append(" seconds");
}
if (SUCCEEDED(hr))
{
    SetDlgItemTextW(IDC_AVAILABLE_TIME, bstrTime.m_str);
}

Per recuperare la quantità di spazio libero in un disco, chiamare IWMPCdromBurn::getItemInfo con "FreeSpace" come primo parametro. Il valore recuperato da questa funzione è una stringa che rappresenta il numero di byte gratuiti disponibili nel disco.

// Set "FreeSpace" string
CComBSTR bstrFreeSpace;
CComBSTR bstrItem;
HRESULT hr = bstrItem.Append("FreeSpace");
if (SUCCEEDED(hr))
{
    hr = m_spCdromBurn->getItemInfo(bstrItem, &bstrFreeSpace);
}
if (SUCCEEDED(hr))
{
    hr = bstrFreeSpace.Append(" bytes");
}
if (SUCCEEDED(hr))
{
    SetDlgItemTextW(IDC_FREE_SPACE, bstrFreeSpace.m_str);
}

Per recuperare la capacità totale di un disco, chiamare IWMPCdromBurn::getItemInfo con "TotalSpace" come primo parametro. Il valore recuperato da questa funzione è una stringa che corrisponde al numero totale di byte nel disco.

// Set "TotalSpace" string.
CComBSTR bstrTotalSpace;
CComBSTR bstrItem;
HRESULT hr = bstrItem.Append("TotalSpace");
if (SUCCEEDED(hr))
{
    hr = m_spCdromBurn->getItemInfo(bstrItem, &bstrTotalSpace);
}
if (SUCCEEDED(hr))
{
    hr = bstrTotalSpace.Append(" bytes");
}
if (SUCCEEDED(hr))
{
    SetDlgItemTextW(IDC_TOTAL_SPACE, bstrTotalSpace.m_str);
}

Masterizzazione di un CD

Recupero dell'interfaccia di masterizzazione CD

Avvio del processo di Burn

Cancellazione di un CD riscrivibile

Recupero dell'unità e dello stato del disco