Auswählen von Elementen für Das Auswählen
Manchmal möchte ein Benutzer nicht jede Spur auf einer CD ausweiten. Windows Media Player stellt eine Schnittstelle bereit, mit der angegeben werden kann, welche Spuren für die Löschung ausgewählt werden. In einer CD-Anwendung gibt es in der Regel eine Benutzeroberfläche, über die der Benutzer Kontrollkästchen in einer Liste von Spuren auf der CD aktivieren kann.
Einige Spuren sind möglicherweise nicht standardmäßig für die Löschung ausgewählt. Wenn sich eine Spur bereits in der bibliothek Windows Media Player befindet, wird sie nicht automatisch für die Suche ausgewählt. Im zweiten Codebeispiel in diesem Abschnitt wird veranschaulicht, wie der Standardwert umgangen und manuell eine Spur für die Suche ausgewählt wird, wenn er bereits ausgereift wurde.
Im folgenden Codebeispiel wird veranschaulicht, wie ermittelt wird, ob eine Spur für die Löschung ausgewählt ist:
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;
}
Im folgenden Codebeispiel wird veranschaulicht, wie sie angeben, ob eine Spur für die Löschung ausgewählt wird.
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;
}