Implementando CEchoPropPage::OnInitDialog

[O recurso associado a esta página, Reprodutor Multimídia do Windows SDK, é um recurso herdado. Foi substituído pelo MediaPlayer. O MediaPlayer foi otimizado para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o MediaPlayer em vez de Reprodutor Multimídia do Windows SDK, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O método CEchoPropPage::OnInitDialog é implementado em EchoPropPage.cpp. Ele é executado quando a caixa de diálogo da página de propriedades é invocada. O código nesse método precisa recuperar os valores de propriedade atuais e exibi-los na caixa de edição correta. O código de exemplo do assistente de plug-in fornece uma implementação para uma única propriedade. Você pode modificar esse código para uma das propriedades de exemplo do Echo e, em seguida, adicionar código para recuperar o segundo valor da propriedade.

Declarando as variáveis do método OnInitDialog

Primeiro, você deve remover a declaração de fScaleFactor e substituí-la pelas seguintes declarações de variável:

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

Recuperando os valores atuais do plug-in

O código deve tentar recuperar os valores de propriedade atuais do plug-in Echo. O exemplo a seguir tenta recuperar cada propriedade:

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

A caixa de diálogo exibe o valor do nível de efeitos para o usuário como um inteiro, mas o plug-in armazena o valor como um número de ponto flutuante. Portanto, o código converte o valor de ponto flutuante em um valor DWORD .

Recuperando os valores atuais do Registro

Se a página de propriedades não puder recuperar os valores atuais do plug-in, ela deverá tentar lê-los do registro. O código a seguir lê cada valor de propriedade:

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 o uso das constantes do Registro que você criou anteriormente.

Exibindo os valores para o usuário

Por fim, a página de propriedades deve exibir os valores nos controles corretos da caixa de edição. O código de exemplo a seguir demonstra isso:

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

Modificando a página de propriedades de exemplo de eco