|
|
// DirectSoundFXEchoPage.cpp : Implementation of CDirectSoundFXEchoPage
#include "stdafx.h"
#include "Dsdmoprp.h"
#include "DirectSoundFXEchoPage.h"
/////////////////////////////////////////////////////////////////////////////
// CDirectSoundFXEchoPage
const CRadioChoice::ButtonEntry g_rgPanDelayButtons[] = { IDC_RADIO_PANNED, 1, IDC_RADIO_NOTPANNED, 0, 0 };
CDirectSoundFXEchoPage::CDirectSoundFXEchoPage() : m_radioPanDelay(g_rgPanDelayButtons) { m_dwTitleID = IDS_TITLEDirectSoundFXEchoPage; m_dwHelpFileID = IDS_HELPFILEDirectSoundFXEchoPage; m_dwDocStringID = IDS_DOCSTRINGDirectSoundFXEchoPage;
m_rgpHandlers[0] = &m_sliderWetDryMix; m_rgpHandlers[1] = &m_sliderFeedback; m_rgpHandlers[2] = &m_sliderLeftDelay; m_rgpHandlers[3] = &m_sliderRightDelay; m_rgpHandlers[4] = &m_radioPanDelay; m_rgpHandlers[5] = NULL; }
STDMETHODIMP CDirectSoundFXEchoPage::SetObjects(ULONG nObjects, IUnknown **ppUnk) { if (nObjects < 1 || nObjects > 1) return E_UNEXPECTED;
HRESULT hr = ppUnk[0]->QueryInterface(IID_IDirectSoundFXEcho, reinterpret_cast<void**>(&m_IDSFXEcho)); return hr; }
STDMETHODIMP CDirectSoundFXEchoPage::Apply(void) { if (!m_IDSFXEcho) return E_UNEXPECTED;
DSFXEcho dsfxecho; ZeroMemory(&dsfxecho, sizeof(DSFXEcho));
dsfxecho.fWetDryMix = m_sliderWetDryMix.GetValue(); dsfxecho.fFeedback = m_sliderFeedback.GetValue(); dsfxecho.fLeftDelay = m_sliderLeftDelay.GetValue(); dsfxecho.fRightDelay = m_sliderRightDelay.GetValue(); dsfxecho.lPanDelay = m_radioPanDelay.GetChoice(*this);
HRESULT hr = m_IDSFXEcho->SetAllParameters(&dsfxecho); if (FAILED(hr)) return hr;
SetDirty(FALSE); return S_OK; }
LRESULT CDirectSoundFXEchoPage::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { if (!m_IDSFXEcho) return 1;
DSFXEcho dsfxecho; ZeroMemory(&dsfxecho, sizeof(DSFXEcho)); m_IDSFXEcho->GetAllParameters(&dsfxecho);
m_sliderWetDryMix.Init(GetDlgItem(IDC_SLIDER_WetDryMix), GetDlgItem(IDC_EDIT_WetDryMix), 0, 100, false); m_sliderWetDryMix.SetValue(dsfxecho.fWetDryMix);
m_sliderFeedback.Init(GetDlgItem(IDC_SLIDER_Feedback), GetDlgItem(IDC_EDIT_Feedback), 0, 100, false); m_sliderFeedback.SetValue(dsfxecho.fFeedback);
m_sliderLeftDelay.Init(GetDlgItem(IDC_SLIDER_LeftDelay), GetDlgItem(IDC_EDIT_LeftDelay), 1, 2000, false); m_sliderLeftDelay.SetValue(dsfxecho.fLeftDelay);
m_sliderRightDelay.Init(GetDlgItem(IDC_SLIDER_RightDelay), GetDlgItem(IDC_EDIT_RightDelay), 1, 2000, false); m_sliderRightDelay.SetValue(dsfxecho.fRightDelay);
m_radioPanDelay.SetChoice(*this, dsfxecho.lPanDelay);
return 1; }
LRESULT CDirectSoundFXEchoPage::OnControlMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { LRESULT lr = MessageHandlerChain(m_rgpHandlers, uMsg, wParam, lParam, bHandled);
if (bHandled) SetDirty(TRUE); return lr; }
|