Share via


Implementación de CEchoPropPage::OnInitDialog

[La característica asociada a esta página, Reproductor multimedia de Windows SDK, es una característica heredada. Se ha reemplazado por MediaPlayer. MediaPlayer se ha optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer en lugar de Reproductor multimedia de Windows SDK, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

El método CEchoPropPage::OnInitDialog se implementa en EchoPropPage.cpp. Se ejecuta cuando se invoca el cuadro de diálogo de la página de propiedades. El código de este método debe recuperar los valores de propiedad actuales y mostrarlos en el cuadro de edición correcto. El código de ejemplo del asistente para complementos proporciona una implementación para una sola propiedad. Puede modificar este código para una de las propiedades de ejemplo Echo y, a continuación, agregar código para recuperar el segundo valor de propiedad.

Declarar las variables de método OnInitDialog

En primer lugar, debe quitar la declaración de fScaleFactor y reemplazarla por las siguientes declaraciones de variable:

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

Recuperar los valores actuales del complemento

El código debe intentar recuperar los valores de propiedad actuales del complemento Echo. En el ejemplo siguiente se intenta recuperar cada propiedad:

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

El cuadro de diálogo muestra el valor de nivel de efectos al usuario como un entero, pero el complemento almacena el valor como un número de punto flotante. Por lo tanto, el código convierte el valor de punto flotante en un valor DWORD .

Recuperación de los valores actuales del Registro

Si la página de propiedades no puede recuperar los valores actuales del complemento, debe intentar leerlos del registro. El código siguiente lee cada valor de propiedad:

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

Observe el uso de las constantes del Registro que creó anteriormente.

Mostrar los valores al usuario

Por último, la página de propiedades debe mostrar los valores en los controles correctos del cuadro de edición. El código de ejemplo siguiente muestra esto:

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

Modificar la página de propiedades de ejemplo de eco