1 // ReverbDlg.cpp : 实现文件
2 //
3
4 #include "stdafx.h"
5 #include "MusicPlayer2.h"
6 #include "Player.h"
7 #include "ReverbDlg.h"
8
9
10 // CReverbDlg 对话框
11
IMPLEMENT_DYNAMIC(CReverbDlg,CTabDlg)12 IMPLEMENT_DYNAMIC(CReverbDlg, CTabDlg)
13
14 CReverbDlg::CReverbDlg(CWnd* pParent /*=NULL*/)
15 : CTabDlg(IDD_REVERB_DIALOG, pParent)
16 {
17
18 }
19
~CReverbDlg()20 CReverbDlg::~CReverbDlg()
21 {
22 }
23
EnableControls(bool enable)24 void CReverbDlg::EnableControls(bool enable)
25 {
26 m_reverb_mix_slider.EnableWindow(enable);
27 m_reverb_time_slider.EnableWindow(enable);
28 }
29
UpdateStaticText(int mix,int time)30 void CReverbDlg::UpdateStaticText(int mix, int time)
31 {
32 wchar_t buff[16];
33 swprintf_s(buff, L"%d%%", mix);
34 SetDlgItemText(IDC_REVERB_MIX_STATIC, buff);
35 swprintf_s(buff, L"%.2fs", static_cast<float>(time) / 100);
36 SetDlgItemText(IDC_REVERB_TIME_STATIC, buff);
37 }
38
InitializeControls()39 bool CReverbDlg::InitializeControls()
40 {
41 wstring temp;
42 temp = theApp.m_str_table.LoadText(L"TXT_REVERB_ENABLE");
43 SetDlgItemTextW(IDC_ENABLE_REVERB_CHECK, temp.c_str());
44 temp = theApp.m_str_table.LoadText(L"TXT_REVERB_STRENGTH");
45 SetDlgItemTextW(IDC_TXT_REVERB_STRENGTH_STATIC, temp.c_str());
46 // IDC_REVERB_MIX_SLIDER
47 // IDC_REVERB_MIX_STATIC
48 temp = theApp.m_str_table.LoadText(L"TXT_REVERB_TIME");
49 SetDlgItemTextW(IDC_TXT_REVERB_TIME_STATIC, temp.c_str());
50 // IDC_REVERB_TIME_SLIDER
51 // IDC_REVERB_TIME_STATIC
52
53 RepositionTextBasedControls({
54 { CtrlTextInfo::L3, IDC_TXT_REVERB_STRENGTH_STATIC },
55 { CtrlTextInfo::L2, IDC_REVERB_MIX_SLIDER },
56 { CtrlTextInfo::L1, IDC_REVERB_MIX_STATIC },
57 { CtrlTextInfo::L3, IDC_TXT_REVERB_TIME_STATIC },
58 { CtrlTextInfo::L2, IDC_REVERB_TIME_SLIDER },
59 { CtrlTextInfo::L1, IDC_REVERB_TIME_STATIC }
60 });
61
62 return true;
63 }
64
DoDataExchange(CDataExchange * pDX)65 void CReverbDlg::DoDataExchange(CDataExchange* pDX)
66 {
67 CTabDlg::DoDataExchange(pDX);
68 DDX_Control(pDX, IDC_REVERB_MIX_SLIDER, m_reverb_mix_slider);
69 DDX_Control(pDX, IDC_REVERB_TIME_SLIDER, m_reverb_time_slider);
70 }
71
72
BEGIN_MESSAGE_MAP(CReverbDlg,CTabDlg)73 BEGIN_MESSAGE_MAP(CReverbDlg, CTabDlg)
74 ON_WM_HSCROLL()
75 ON_BN_CLICKED(IDC_ENABLE_REVERB_CHECK, &CReverbDlg::OnBnClickedEnableReverbCheck)
76 ON_WM_DESTROY()
77 END_MESSAGE_MAP()
78
79
80 // CReverbDlg 消息处理程序
81
82
83 BOOL CReverbDlg::OnInitDialog()
84 {
85 CTabDlg::OnInitDialog();
86
87 // TODO: 在此添加额外的初始化
88
89 //初始化滑动条
90 m_reverb_mix_slider.SetRange(0, 100);
91 m_reverb_mix_slider.SetPos(CPlayer::GetInstance().GetReverbMix());
92 m_reverb_time_slider.SetRange(1, 300);
93 m_reverb_time_slider.SetPos(CPlayer::GetInstance().GetReverbTime());
94
95 //初始化静态控件的文本
96 UpdateStaticText(m_reverb_mix_slider.GetPos(), m_reverb_time_slider.GetPos());
97
98 //初始化混响开关复选框
99 CheckDlgButton(IDC_ENABLE_REVERB_CHECK, CPlayer::GetInstance().GetReverbEnable());
100
101 if (CPlayer::GetInstance().IsFfmpegCore() || CPlayer::GetInstance().IsMciCore()) {
102 EnableControls(false);
103 EnableDlgCtrl(IDC_ENABLE_REVERB_CHECK, false);
104 } else {
105 //初始化控件的启用状态
106 EnableControls(CPlayer::GetInstance().GetReverbEnable());
107 }
108
109 return TRUE; // return TRUE unless you set the focus to a control
110 // 异常: OCX 属性页应返回 FALSE
111 }
112
113
OnHScroll(UINT nSBCode,UINT nPos,CScrollBar * pScrollBar)114 void CReverbDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
115 {
116 // TODO: 在此添加消息处理程序代码和/或调用默认值
117 if (pScrollBar->GetDlgCtrlID() == IDC_REVERB_MIX_SLIDER || pScrollBar->GetDlgCtrlID() == IDC_REVERB_TIME_SLIDER)
118 {
119 int mix{ m_reverb_mix_slider.GetPos() };
120 int time{ m_reverb_time_slider.GetPos() };
121 CPlayer::GetInstance().GetPlayerCore()->SetReverb(mix, time);
122 UpdateStaticText(mix, time);
123 }
124
125 CTabDlg::OnHScroll(nSBCode, nPos, pScrollBar);
126 }
127
128
OnBnClickedEnableReverbCheck()129 void CReverbDlg::OnBnClickedEnableReverbCheck()
130 {
131 // TODO: 在此添加控件通知处理程序代码
132 bool enable = (IsDlgButtonChecked(IDC_ENABLE_REVERB_CHECK) != FALSE);
133 CPlayer::GetInstance().EnableReverb(enable);
134 EnableControls(enable);
135 }
136
137
OnDestroy()138 void CReverbDlg::OnDestroy()
139 {
140 CPlayer::GetInstance().SetReverbMix(m_reverb_mix_slider.GetPos());
141 CPlayer::GetInstance().SetReverbTime(m_reverb_time_slider.GetPos());
142
143 CTabDlg::OnDestroy();
144 }
145