选择要撕裂的项目
有时用户不想在 CD 上撕裂每个曲目。 Windows 媒体播放器提供了一个接口,用于指定为撕裂选择哪些曲目。 通常,在 CD 撕裂应用程序中,有一个用户界面,允许用户在 CD 上的曲目列表中选择复选框。
默认情况下,可能未选择某些曲目进行翻录。 如果轨道已在Windows 媒体播放器库中,则不会自动选择它进行翻录。 本部分中的第二个代码示例演示如何绕过默认值,并在已撕裂的情况下手动选择用于撕裂的轨迹。
下面的代码示例演示如何确定是否选择了用于撕裂的轨道:
HRESULT CMainDlg::IsTrackSelected(long lIndex, bool &bSelected)
{
// The track is selected unless the
// "SelectedForRip" attribute is true.
bSelected = true;
// bstrItemName and bstrVal are used for getItemInfo.
CComBSTR bstrItemName;
CComBSTR bstrVal;
// Get an IWMPMedia from the Playlist.
CComPtr<IWMPMedia> spMedia;
HRESULT hr = m_spPlaylist->get_item(lIndex, &spMedia);
// Check whether it is selected for ripping.
if (SUCCEEDED(hr))
{
hr = bstrItemName.Append("SelectedForRip");
}
if (SUCCEEDED(hr))
{
hr = spMedia->getItemInfo(
bstrItemName,
&bstrVal);
}
if (SUCCEEDED(hr))
{
// If getItemInfo("SelectedForRip") is not "True"
// then the track is not selected.
if (wcscmp(bstrVal.m_str, L"True"))
bSelected = false;
}
return hr;
}
下面的代码示例演示如何指定是否选择了用于撕裂的轨迹。
HRESULT CMainDlg::SelectTrack (long lIndex, bool bSelected)
{
// bstrItemName and bstrVal are used for setItemInfo.
CComBSTR bstrItemName;
CComBSTR bstrVal;
// Get an IWMPMedia from the Playlist.
CComPtr<IWMPMedia> spMedia;
HRESULT hr = m_spPlaylist->get_item(lIndex, &spMedia);
// Select the track for ripping.
if (SUCCEEDED(hr))
{
hr = bstrItemName.Append("SelectedForRip");
}
if (SUCCEEDED(hr))
{
if (bSelected)
{
hr = bstrVal.Append("True");
}
else
{
hr = bstrVal.Append("False");
}
}
if (SUCCEEDED(hr))
{
hr = spMedia->setItemInfo(
bstrItemName,
bstrVal);
}
return hr;
}
相关主题