Реализация CechoPropPage::OnInitDialog
[Функция, связанная с этой страницей, Медиаплеер Windows SDK, является устаревшей функцией. Он был заменен MediaPlayer. MediaPlayer оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует по возможности использовать MediaPlayer вместо пакета SDK для Медиаплеер Windows. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]
Метод CEchoPropPage::OnInitDialog реализован в EchoPropPage.cpp. Он выполняется при вызове диалогового окна страницы свойств. Код в этом методе должен получить текущие значения свойств и отобразить их в правильном поле ввода. Пример кода мастера подключаемых модулей предоставляет реализацию для одного свойства. Этот код можно изменить для одного из примеров свойств Echo, а затем добавить код, чтобы получить второе значение свойства.
Объявление переменных метода OnInitDialog
Сначала необходимо удалить объявление fScaleFactor и заменить его следующими объявлениями переменных:
DWORD dwDelayTime = 1000; // Default delay time.
DWORD dwWetmix = 50; // Default wet mix DWORD.
double fWetmix = 0.50; // Default wet mix double.
Получение текущих значений из подключаемого модуля
Затем код должен попытаться получить текущие значения свойств из подключаемого модуля Echo. В следующем примере предпринимается попытка получить каждое свойство:
if (m_spEcho)
{
m_spEcho->get_delay(&dwDelayTime);
m_spEcho->get_wetmix(&fWetmix);
// Convert wet mix from double to DWORD.
dwWetmix = (DWORD)(fWetmix * 100);
}
В диалоговом окне для пользователя отображается значение уровня эффектов в виде целого числа, но подключаемый модуль сохраняет значение в виде числа с плавающей запятой. Таким образом, код преобразует значение с плавающей запятой в значение DWORD .
Получение текущих значений из реестра
Если страница свойств не может получить текущие значения из подключаемого модуля, она должна попытаться прочитать их из реестра. Следующий код считывает каждое значение свойства:
else // Otherwise, read values from registry
{
CRegKey key;
LONG lResult;
lResult = key.Open(HKEY_CURRENT_USER, kszPrefsRegKey, KEY_READ);
if (ERROR_SUCCESS == lResult)
{
DWORD dwValue = 0;
// Read the delay time.
lResult = key.QueryValue(dwValue, kszPrefsDelayTime );
if (ERROR_SUCCESS == lResult)
{
dwDelayTime = dwValue;
}
// Read the wet mix value.
lResult = key.QueryValue(dwValue, kszPrefsWetmix );
if (ERROR_SUCCESS == lResult)
{
dwWetmix = dwValue;
}
}
}
Обратите внимание на использование ранее созданных констант реестра.
Отображение значений для пользователя
Наконец, на странице свойств должны отображаться значения в правильных элементах управления "Поле ввода". Это демонстрируется в следующем примере кода:
TCHAR szStr[MAXSTRING];
// Display the delay time.
_stprintf_s(szStr, MAXSTRING, _T("%u"), dwDelayTime);
SetDlgItemText(IDC_DELAYTIME, szStr);
// Display the effect level.
_stprintf_s(szStr, MAXSTRING, _T("%u"), dwWetmix);
SetDlgItemText(IDC_WETMIX, szStr);
Связанные темы
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по