Implementieren von CEchoPropPage::OnInitDialog
Die CEchoPropPage::OnInitDialog-Methode wird in EchoPropPage.cpp implementiert. Er wird ausgeführt, wenn das Eigenschaftenseitendialogfeld aufgerufen wird. Der Code in dieser Methode muss die aktuellen Eigenschaftswerte abrufen und im richtigen Bearbeitungsfeld anzeigen. Der Beispielcode des Plug-In-Assistenten stellt eine Implementierung für eine einzelne Eigenschaft zur Auswahl. Sie können diesen Code für eine der Echo-Beispieleigenschaften ändern und dann Code hinzufügen, um den zweiten Eigenschaftswert abzurufen.
Deklarieren der OnInitDialog-Methodenvariablen
Zunächst müssen Sie die Deklaration von fScaleFactor entfernen und durch die folgenden Variablendeklarationen ersetzen:
DWORD dwDelayTime = 1000; // Default delay time.
DWORD dwWetmix = 50; // Default wet mix DWORD.
double fWetmix = 0.50; // Default wet mix double.
Abrufen der aktuellen Werte aus dem Plug-In
Der Code sollte als Nächstes versuchen, die aktuellen Eigenschaftswerte aus dem Echo-Plug-In abzurufen. Im folgenden Beispiel wird versucht, jede Eigenschaft abzurufen:
if (m_spEcho)
{
m_spEcho->get_delay(&dwDelayTime);
m_spEcho->get_wetmix(&fWetmix);
// Convert wet mix from double to DWORD.
dwWetmix = (DWORD)(fWetmix * 100);
}
Im Dialogfeld wird der Wert der Effektebene für den Benutzer als ganze Zahl angezeigt, aber das Plug-In speichert den Wert als Gleitkommazahl. Daher konvertiert der Code den Gleitkommawert in einen DWORD-Wert.
Abrufen der aktuellen Werte aus der Registrierung
Wenn die Eigenschaftenseite die aktuellen Werte nicht aus dem Plug-In abrufen kann, muss sie versuchen, sie aus der Registrierung zu lesen. Der folgende Code liest jeden Eigenschaftswert:
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;
}
}
}
Beachten Sie die Verwendung der Registrierungskonst constants, die Sie zuvor erstellt haben.
Anzeigen der Werte für den Benutzer
Schließlich muss die Eigenschaftenseite die Werte in den richtigen Bearbeitungsfeld-Steuerelementen anzeigen. Dies wird im folgenden Beispielcode veranschaulicht:
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);