擷取待用狀態
[與此頁面相關聯的功能Windows 媒體播放機 SDK是舊版功能。 它已被 MediaPlayer 取代。 MediaPlayer已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用MediaPlayer,而不是Windows 媒體播放機 SDK。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
在下列程式碼範例中,會定義下列對話方塊控制項:
控制識別碼 | 描述 |
---|---|
IDC_BURN_STATE | 靜態文字,表示 CD 消耗作業的狀態。 |
IDC_PROGRESS | 進度列,範圍為 0 到 100,代表總消耗進度。 |
IDC_PROGRESS_TEXT | 靜態文字,代表從 0 到 100 的總消耗進度。 |
IDC_AVAILABLE_TIME | 靜態文字,以秒為單位顯示 CD 上可用的時間。 |
IDC_FREE_SPACE | 靜態文字,以位元組為單位顯示 CD 上的可用空間。 |
IDC_TOTAL_SPACE | 要顯示 CD 總容量的靜態文字,以位元組為單位。 |
您可以定期呼叫 IWMPCdromName::get_burnProgress ,以監視光碟機作業的進度。 這個方法會擷取整個擷取作業的進度值。 擷取的值是一個數位,代表從 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);
}
您可以藉由呼叫 IWMPCdromCount::get_burnState,來取得消耗作業的目前狀態。 這個方法會擷取列舉,指定正在執行的作業。
// 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);
}
}
若要擷取 CD 可以保留的音訊秒數,請使用 「AvailableTime」 作為第一個參數呼叫 IWMPCdrom,:getItemInfo 。 此函式所擷取的值是以字串表示。
// 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);
}
若要擷取磁片上的可用空間量,請使用 「FreeSpace」 作為第一個參數呼叫 IWMPCdrom以::getItemInfo 。 此函式所擷取的值是代表磁片上可用位元組數目的字串。
// 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);
}
若要擷取磁片的容量總計,請使用 「TotalSpace」 作為第一個參數呼叫 IWMPCdrom以::getItemInfo 。 此函式所擷取的值是對應于磁片上位元組總數的字串。
// 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);
}
相關主題
意見反應
提交並檢視相關的意見反應