www.pudn.com > 1littlebox.rar > VolumeControl.cpp
// VolumeControl.cpp : implementation file
//
#include "stdafx.h"
#include "littlebox.h"
#include "VolumeControl.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CVolumeControl dialog
CVolumeControl::CVolumeControl(CWnd* pParent /*=NULL*/)
: CDialog(CVolumeControl::IDD, pParent)
{
//{{AFX_DATA_INIT(CVolumeControl)
//}}AFX_DATA_INIT
}
void CVolumeControl::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CVolumeControl)
DDX_Control(pDX, IDC_EDIT1, m_static_key);
DDX_Control(pDX, IDC_SLIDER5, m_wave_out_right_control);
DDX_Control(pDX, IDC_SLIDER3, m_wave_out_left_control);
DDX_Control(pDX, IDC_SLIDER1, m_main_left_control);
DDX_Control(pDX, IDC_SLIDER2, m_main_right_control);
DDX_Control(pDX, IDC_PROGRESS1, m_wave_out_left_show);
DDX_Control(pDX, IDC_PROGRESS2, m_wave_out_right_show);
DDX_Control(pDX, IDC_PROGRESS3, m_micphone_show);
DDX_Control(pDX, IDC_SLIDER6, m_micphone_control);
DDX_Control(pDX, IDC_BUTTON5, m_mute_micphone);
DDX_Control(pDX, IDC_BUTTON2, m_mute_wave_out);
DDX_Control(pDX, IDC_BUTTON1, m_mute_main);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CVolumeControl, CDialog)
//{{AFX_MSG_MAP(CVolumeControl)
ON_BN_CLICKED(IDC_BUTTON1, OnMuteMain)
ON_BN_CLICKED(IDC_BUTTON2, OnMuteWave)
ON_BN_CLICKED(IDC_BUTTON5, OnMuteMicphone)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CVolumeControl message handlers
BOOL CVolumeControl::OnInitDialog()
{
CDialog::OnInitDialog();
//TODO:Add you code here
DWORD vl,vr;
m_vvv.Create(this,MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,-1,MIXERCONTROL_CONTROLTYPE_VOLUME);
m_mmv.Create(this,MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,-1);
m_vvv.GetValue(&vl,&vr);
m_wave_out_left_control.SetRange(m_vvv.GetMin(),m_vvv.GetMax());m_wave_out_left_control.SetTicFreq(m_vvv.GetMax()/15);
m_wave_out_right_control.SetRange(m_vvv.GetMin(),m_vvv.GetMax());m_wave_out_right_control.SetTicFreq(m_vvv.GetMax()/15);
m_wave_out_left_control.SetPos(m_wave_out_left_control.GetRangeMax()-m_wave_out_left_control.GetRangeMin()-vl);
m_wave_out_right_control.SetPos(m_wave_out_right_control.GetRangeMax()-m_wave_out_right_control.GetRangeMin()-vr);
m_mute_main.SetCheck(m_mmv.GetValue());
SetTimer(1,100,NULL);
return TRUE;
}
void CVolumeControl::OnMuteMain()
{
// TODO: Add your control notification handler code here
m_mmm.SetValue(m_mute_main.GetCheck());
}
void CVolumeControl::OnMuteWave()
{
// TODO: Add your control notification handler code here
m_mmv.SetValue(m_mute_wave_out.GetCheck());
}
void CVolumeControl::OnMuteMicphone()
{
// TODO: Add your control notification handler code here
m_mmw.SetValue(m_mute_micphone.GetCheck());
}
void CVolumeControl::OnPaint()
{
}
HCURSOR CVolumeControl::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CVolumeControl::OnClose()
{
m_vvv.Close();
m_vvm.Close();
m_vvw.Close();
m_mmv.Close();
m_mmm.Close();
m_mmw.Close();
CDialog::OnClose();
}
void CVolumeControl::OnTimer(UINT nIDEvent)
{
DWORD vl,vr;
m_ppw.GetValue(&vl,&vr);
m_wave_out_left_show.SetPos(m_ppw.GetMax()-vl);
m_wave_out_right_show.SetPos(m_ppw.GetMax()-vr);
m_ppm.GetValue(&vl,&vr);
m_micphone_show.SetPos(m_ppm.GetMax()-vl);
m_vvw.GetValue(&vl,&vr);
m_main_left_control.SetPos(m_vvw.GetMax()-vl);
m_main_right_control.SetPos(m_vvw.GetMax()-vr);
CDialog::OnTimer(nIDEvent);
}
void CVolumeControl::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
if(cx<=0||cy<=0) KillTimer(1);
else SetTimer(1,100,NULL);
}
void CVolumeControl::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CSliderCtrl *m_bar=(CSliderCtrl *)pScrollBar;
if(m_bar==&m_main_left_control||m_bar==&m_main_right_control)
m_vvv.SetValue(m_main_left_control.GetRangeMax()-
m_main_left_control.GetRangeMin()-m_main_left_control.GetPos(),
m_main_right_control.GetRangeMax()-m_main_right_control.GetRangeMin()
-m_main_right_control.GetPos());
else if(m_bar==&m_wave_out_left_control||m_bar==&m_wave_out_right_control)
m_vvw.SetValue(m_wave_out_left_control.GetRangeMax()-
m_wave_out_left_control.GetRangeMin()-m_wave_out_left_control.GetPos(),
m_wave_out_right_control.GetRangeMax()-
m_wave_out_right_control.GetRangeMin()-
m_wave_out_right_control.GetPos());
else if(m_bar==&m_micphone_control)
m_vvm.SetValue(m_micphone_control.GetRangeMax()-
m_micphone_control.GetRangeMin()-
m_micphone_control.GetPos(),m_micphone_control.GetRangeMax()-
m_micphone_control.GetRangeMin()
-m_micphone_control.GetPos());
CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}
void CVolumeControl::OnMixerChange(WPARAM wparam, LPARAM lparam)
{
DWORD vl,vr;
if((DWORD)lparam==m_vvv.m_controlid)
{
m_vvv.GetValue(&vl,&vr);
m_main_left_control.SetPos(m_main_left_control.GetRangeMax()-
m_main_left_control.GetRangeMin()-vl);
m_main_right_control.SetPos(m_main_right_control.GetRangeMax()-
m_main_right_control.GetRangeMin()-vr);
}
else if((DWORD)lparam==m_mmv.m_controlid)
m_mute_main.SetCheck(m_mmv.GetValue());
else if((DWORD)lparam==m_vvw.m_controlid)
{
m_vvw.GetValue(&vl,&vr);
m_wave_out_left_control.SetPos(m_wave_out_left_control.GetRangeMax()-
m_wave_out_left_control.GetRangeMin()-vl);
m_wave_out_right_control.SetPos(m_wave_out_right_control.GetRangeMax()-
m_wave_out_right_control.GetRangeMin()-vr);
}
else if((DWORD)lparam==m_mmw.m_controlid)
m_mute_wave_out.SetCheck(m_mmw.GetValue());
else if((DWORD)lparam==m_vvm.m_controlid)
{
m_vvm.GetValue(&vl,&vr);
m_micphone_control.SetPos(m_micphone_control.GetRangeMax()-
m_micphone_control.GetRangeMin()-vl);
}
else if((DWORD)lparam==m_mmm.m_controlid)
m_mute_micphone.SetCheck(m_mmm.GetValue());
}