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);

Ändern der Eigenschaftenseite des Echobeispiels