Condividi tramite


Implementazione di CEchoPropPage::OnInitDialog

[La funzionalità associata a questa pagina, Lettore multimediale Windows SDK, è una funzionalità legacy. È stata sostituita da MediaPlayer. MediaPlayer è stato ottimizzato per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer anziché Lettore multimediale Windows SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il metodo CEchoPropPage::OnInitDialog viene implementato in EchoPropPage.cpp. Viene eseguito quando viene richiamata la finestra di dialogo della pagina delle proprietà. Il codice in questo metodo deve recuperare i valori delle proprietà correnti e visualizzarli nella casella di modifica corretta. Il codice di esempio della procedura guidata plug-in fornisce un'implementazione per una singola proprietà. È possibile modificare questo codice per una delle proprietà di esempio Echo e quindi aggiungere codice per recuperare il secondo valore della proprietà.

Dichiarazione delle variabili del metodo OnInitDialog

Prima di tutto, è necessario rimuovere la dichiarazione di fScaleFactor e sostituirla con le dichiarazioni di variabile seguenti:

DWORD  dwDelayTime = 1000;    // Default delay time.
DWORD  dwWetmix = 50;         // Default wet mix DWORD.
double fWetmix =  0.50;       // Default wet mix double.

Recupero dei valori correnti dal plug-in

Il codice deve quindi tentare di recuperare i valori delle proprietà correnti dal plug-in Echo. L'esempio seguente tenta di recuperare ogni proprietà:

if (m_spEcho)
{
    m_spEcho->get_delay(&dwDelayTime);
    m_spEcho->get_wetmix(&fWetmix);
    // Convert wet mix from double to DWORD.
    dwWetmix = (DWORD)(fWetmix * 100);
}

La finestra di dialogo visualizza il valore del livello di effetti per l'utente come intero, ma il plug-in archivia il valore come numero a virgola mobile. Pertanto, il codice converte il valore a virgola mobile in un valore DWORD .

Recupero dei valori correnti dal Registro di sistema

Se la pagina delle proprietà non riesce a recuperare i valori correnti dal plug-in, deve tentare di leggerli dal Registro di sistema. Il codice seguente legge ogni valore della proprietà:

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

Si noti l'uso delle costanti del Registro di sistema create in precedenza.

Visualizzazione dei valori all'utente

Infine, la pagina delle proprietà deve visualizzare i valori nei controlli della casella di modifica corretti. Il codice di esempio seguente illustra quanto segue:

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

Modifica della pagina della proprietà Echo Sample