Abrufen des Burn Status

Im folgenden Codebeispiel werden die folgenden Dialogfeldsteuerelemente definiert:

Steuerungs-ID BESCHREIBUNG
IDC_BURN_STATE Statischer Text, der den Zustand des CD-Brennens darstellt.
IDC_PROGRESS Statusleiste mit einem Bereich von 0 bis 100, der den Gesamten Burn-Fortschritt darstellt.
IDC_PROGRESS_TEXT Statischer Text, der den gesamten Burn-Fortschritt als Zahl von 0 bis 100 darstellt.
IDC_AVAILABLE_TIME Statischer Text, um die Zeit anzuzeigen, die auf der CD verfügbar ist, in Sekunden.
IDC_FREE_SPACE Statischer Text, um den freien Speicherplatz auf der CD in Bytes anzuzeigen.
IDC_TOTAL_SPACE Statischer Text, der die Gesamtkapazität der CD in Bytes anzeigt.

 

Sie können den Fortschritt des Brennens überwachen, indem Sie regelmäßig IWMPCdromBurn::get_burnProgress aufrufen, während die CD verbrannt wird. Diese Methode ruft einen Statuswert für den gesamten Brennensvorgang ab. Der abgerufene Wert ist eine Zahl, die den Prozentsatz der abgeschlossenen Verbrennung von 0 bis 100 darstellt.

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

Sie können den aktuellen Zustand des Brennens abrufen, indem Sie IWMPCdromBurn::get_burnState aufrufen. Diese Methode ruft eine Aufzählung ab, die den aktuellen Vorgang angibt, der ausgeführt wird.

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

Rufen Sie IWMPCdromBurn::getItemInfo mit "AvailableTime" als ersten Parameter auf, um die Anzahl der Sekunden des Audiodatenträgers abzurufen. Der von dieser Funktion abgerufene Wert wird durch eine Zeichenfolge dargestellt.

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

Rufen Sie IWMPCdromBurn::getItemInfo mit "FreeSpace" als ersten Parameter auf, um den freien Speicherplatz auf einem Datenträger abzurufen. Der von dieser Funktion abgerufene Wert ist eine Zeichenfolge, die die Anzahl der freien Bytes darstellt, die auf dem Datenträger verfügbar sind.

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

Um die Gesamtkapazität eines Datenträgers abzurufen, rufen Sie IWMPCdromBurn::getItemInfo mit "TotalSpace" als ersten Parameter auf. Der von dieser Funktion abgerufene Wert ist eine Zeichenfolge, die der Gesamtanzahl von Bytes auf dem Datenträger entspricht.

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

Brennen einer CD

Abrufen der Schnittstelle zum Brennen von CDs

Starten des Burn Prozesses

Löschen einer beschreibbaren CD

Abrufen des Laufwerks und des Datenträgerstatus