Share via


CEchoPropPage::OnInitDialog の実装

[このページWindows メディア プレーヤー SDK に関連付けられている機能は、レガシ機能です。 MediaPlayer に置き換わりました。 MediaPlayer は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能な場合は SDK ではなく MediaPlayerWindows メディア プレーヤー使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

CEchoPropPage::OnInitDialog メソッドは EchoPropPage.cpp に実装されています。 プロパティ ページ ダイアログ ボックスが呼び出されたときに実行されます。 このメソッドのコードでは、現在のプロパティ値を取得し、正しい編集ボックスに表示する必要があります。 プラグイン ウィザードのサンプル コードは、1 つのプロパティの実装を提供します。 Echo サンプル プロパティの 1 つに対してこのコードを変更し、2 番目のプロパティ値を取得するコードを追加できます。

OnInitDialog メソッド変数の宣言

最初に、fScaleFactor の宣言を削除し、次の変数宣言に置き換える必要があります。

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

プラグインからの現在の値の取得

コードは次に、Echo プラグインから現在のプロパティ値の取得を試みる必要があります。 次の例では、各プロパティの取得を試みます。

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

ダイアログ ボックスには、ユーザーに対する効果レベルの値が整数として表示されますが、プラグインは値を浮動小数点数として格納します。 したがって、コードは浮動小数点値を DWORD 値に変換します。

レジストリからの現在の値の取得

プロパティ ページがプラグインから現在の値を取得できない場合は、レジストリから値の読み取りを試みる必要があります。 次のコードは、各プロパティ値を読み取ります。

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

前に作成したレジストリ定数の使用に注意してください。

ユーザーへの値の表示

最後に、プロパティ ページには、正しい編集ボックス コントロールの値を表示する必要があります。 次のコード例は、これを示しています。

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

Echo Sample プロパティ ページの変更