Récupération de l’état Burn

Dans l’exemple de code suivant, les contrôles de boîte de dialogue suivants sont définis :

ID du contrôle Description
IDC_BURN_STATE Texte statique qui représente l’état de l’opération de combustion du CD.
IDC_PROGRESS Barre de progression avec une plage de 0 à 100 qui représente la progression totale de la brûlure.
IDC_PROGRESS_TEXT Texte statique qui représente la progression totale de la brûlure sous la forme d’un nombre compris entre 0 et 100.
IDC_AVAILABLE_TIME Texte statique pour afficher l’heure disponible sur le CD, en secondes.
IDC_FREE_SPACE Texte statique pour afficher l’espace libre sur le CD, en octets.
IDC_TOTAL_SPACE Texte statique pour afficher la capacité totale du CD, en octets.

 

Vous pouvez surveiller la progression de l’opération de combustion en appelant régulièrement IWMPCdromBurn::get_burnProgress pendant que le CD est brûlé. Cette méthode récupère une valeur de progression pour l’opération de combustion entière. La valeur récupérée est un nombre qui représente le pourcentage de brûlure terminée, de 0 à 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);
}

Vous pouvez obtenir l’état actuel de l’opération de combustion en appelant IWMPCdromBurn::get_burnState. Cette méthode récupère une énumération spécifiant l’opération en cours d’exécution.

// 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);
    }
}

Pour récupérer le nombre de secondes d’audio que le CD peut contenir, appelez IWMPCdromBurn::getItemInfo avec « AvailableTime » comme premier paramètre. La valeur récupérée par cette fonction est représentée par une chaîne.

// 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);
}

Pour récupérer la quantité d’espace libre sur un disque, appelez IWMPCdromBurn::getItemInfo avec « FreeSpace » comme premier paramètre. La valeur récupérée par cette fonction est une chaîne qui représente le nombre d’octets gratuits disponibles sur le disque.

// 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);
}

Pour récupérer la capacité totale d’un disque, appelez IWMPCdromBurn::getItemInfo avec « TotalSpace » comme premier paramètre. La valeur récupérée par cette fonction est une chaîne qui correspond au nombre total d’octets sur le disque.

// 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);
}

Brûlure d’un CD

Récupération de l’interface de gravure de CD

Démarrage du processus de Burn

Effacement d’un CD réécritable

Récupération de l’état lecteur et disque