Changing Synchronization Priority
[The feature associated with this page, Windows Media Player SDK, is a legacy feature. It has been superseded by MediaPlayer. MediaPlayer has been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer instead of Windows Media Player SDK, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]
The following example code specifies a priority value for each item in the ListView control identified by IDC_PLVIEW. Items that are marked with a check mark are assigned a priority value based on their order in the list. Items that are not checked are assigned a priority value of zero.
void CSyncSettings::SetPriorities()
{
ATLASSERT(m_spPlaylist.p);
long lCount = 0;
CComBSTR bstrAttribute(g_szSyncAttributeNames[m_lCurrentPSIndex]);
long lPriorityCount = 0; // Tracks the next priority value to be assigned.
long lNewPriority = 0; // Contains the new priority value for the playlist.
HRESULT hr = m_spPlaylist->get_count(&lCount);
if(SUCCEEDED(hr) && lCount > 0)
{
HCURSOR hCursor = LoadCursor(NULL, IDC_WAIT);
HCURSOR hCursorOld = SetCursor(hCursor);
// Walk the list.
for(long i = 0; i < lCount; i++)
{
CComPtr<IWMPMedia> spMedia;
BOOL bChecked = ListView_GetCheckState(m_hPlView, i);
if(TRUE == bChecked)
{
// Assign a priority value.
lNewPriority = ++lPriorityCount;
}
else
{
// Not a sync playlist.
lNewPriority = 0;
}
// Set the attribute on the playlist.
hr = m_spPlaylist->get_item(i, &spMedia);
if(SUCCEEDED(hr))
{
WCHAR buffer[30];
_ltow(lNewPriority, buffer, 10);
CComBSTR bstrPriority(buffer);
hr = spMedia->setItemInfo(bstrAttribute, bstrPriority);
}
}
SetCursor(hCursorOld);
}
}
Related topics