检索燃烧状态
[与此页面关联的功能(Windows 媒体播放器 SDK)是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer 而不是 Windows 媒体播放器 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
在下面的代码示例中,定义了以下对话控件:
控制 ID | 描述 |
---|---|
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 总容量(以字节为单位)的静态文本。 |
可以通过在烧录 CD 时定期调用 IWMPCdromBurn::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);
}
可以通过调用 IWMPCdromBurn::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”作为第一个参数调用 IWMPCdromBurn::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”作为第一个参数调用 IWMPCdromBurn::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”作为第一个参数调用 IWMPCdromBurn::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);
}
相关主题
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈