xref: /MusicPlayer2/MusicPlayer2/OggEncodeCfgDlg.cpp (revision 45230f7761877b04341d3bd7a9e408b73e17af89)
1 // OggEncodeCfgDlg.cpp: 实现文件
2 //
3 
4 #include "stdafx.h"
5 #include "MusicPlayer2.h"
6 #include "OggEncodeCfgDlg.h"
7 
8 
9 // COggEncodeCfgDlg 对话框
10 
IMPLEMENT_DYNAMIC(COggEncodeCfgDlg,CBaseDialog)11 IMPLEMENT_DYNAMIC(COggEncodeCfgDlg, CBaseDialog)
12 
13 COggEncodeCfgDlg::COggEncodeCfgDlg(CWnd* pParent /*=nullptr*/)
14     : CBaseDialog(IDD_OGG_ENCODE_CFG_DIALOG, pParent)
15 {
16 
17 }
18 
~COggEncodeCfgDlg()19 COggEncodeCfgDlg::~COggEncodeCfgDlg()
20 {
21 }
22 
SetInfoText()23 void COggEncodeCfgDlg::SetInfoText()
24 {
25     int rate{};
26     switch (m_encode_para.encode_quality)
27     {
28     case -1: rate = 45; break;
29     case 0: rate = 64; break;
30     case 1: rate = 80; break;
31     case 2: rate = 96; break;
32     case 3: rate = 112; break;
33     case 4: rate = 128; break;
34     case 5: rate = 160; break;
35     case 6: rate = 192; break;
36     case 7: rate = 224; break;
37     case 8: rate = 256; break;
38     case 9: rate = 320; break;
39     case 10: rate = 500; break;
40     }
41     // wstring info = theApp.m_str_table.LoadTextFormat(L"TXT_ENCODE_OPT_OGG_QUALITY_INFO", { m_encode_para.encode_quality, rate });
42     std::wstringstream wss;
43     wss << m_encode_para.encode_quality << L" (" << rate << L" kbps)";
44     wstring info = wss.str();
45     SetDlgItemTextW(IDC_INFO_STATIC, info.c_str());
46 }
47 
GetDialogName() const48 CString COggEncodeCfgDlg::GetDialogName() const
49 {
50     return L"OggEncodeOptDlg";
51 }
52 
InitializeControls()53 bool COggEncodeCfgDlg::InitializeControls()
54 {
55     wstring temp;
56     temp = theApp.m_str_table.LoadText(L"TITLE_ENCODE_OPT_OGG");
57     SetWindowTextW(temp.c_str());
58     temp = theApp.m_str_table.LoadText(L"TXT_ENCODE_OPT_OGG_ENCODE_QUALITY_SEL");
59     SetDlgItemTextW(IDC_TXT_ENCODE_OPT_OGG_ENCODE_QUALITY_SEL_STATIC, temp.c_str());
60     // IDC_QUALITY_SLIDER
61     // IDC_INFO_STATIC
62     temp = theApp.m_str_table.LoadText(L"TXT_ENCODE_OPT_OGG_ENCODE_QUALITY_LOW");
63     SetDlgItemTextW(IDC_TXT_ENCODE_OPT_OGG_ENCODE_QUALITY_LOW_STATIC, temp.c_str());
64     temp = theApp.m_str_table.LoadText(L"TXT_ENCODE_OPT_OGG_ENCODE_QUALITY_HIGH");
65     SetDlgItemTextW(IDC_TXT_ENCODE_OPT_OGG_ENCODE_QUALITY_HIGH_STATIC, temp.c_str());
66 
67     RepositionTextBasedControls({
68         { CtrlTextInfo::R1, IDOK, CtrlTextInfo::W32 },
69         { CtrlTextInfo::R2, IDCANCEL, CtrlTextInfo::W32 }
70         });
71     return true;
72 }
73 
DoDataExchange(CDataExchange * pDX)74 void COggEncodeCfgDlg::DoDataExchange(CDataExchange* pDX)
75 {
76     CBaseDialog::DoDataExchange(pDX);
77     DDX_Control(pDX, IDC_QUALITY_SLIDER, m_quality_sld);
78 }
79 
80 
BEGIN_MESSAGE_MAP(COggEncodeCfgDlg,CBaseDialog)81 BEGIN_MESSAGE_MAP(COggEncodeCfgDlg, CBaseDialog)
82     ON_NOTIFY(NM_CUSTOMDRAW, IDC_QUALITY_SLIDER, &COggEncodeCfgDlg::OnNMCustomdrawQualitySlider)
83 END_MESSAGE_MAP()
84 
85 
86 // COggEncodeCfgDlg 消息处理程序
87 
88 
89 BOOL COggEncodeCfgDlg::OnInitDialog()
90 {
91     CBaseDialog::OnInitDialog();
92 
93     // TODO:  在此添加额外的初始化
94     m_quality_sld.SetRange(-1, 10);
95     m_quality_sld.SetPos(m_encode_para.encode_quality);
96     SetInfoText();
97     return TRUE;  // return TRUE unless you set the focus to a control
98                   // 异常: OCX 属性页应返回 FALSE
99 }
100 
101 
OnNMCustomdrawQualitySlider(NMHDR * pNMHDR,LRESULT * pResult)102 void COggEncodeCfgDlg::OnNMCustomdrawQualitySlider(NMHDR *pNMHDR, LRESULT *pResult)
103 {
104     LPNMCUSTOMDRAW pNMCD = reinterpret_cast<LPNMCUSTOMDRAW>(pNMHDR);
105     // TODO: 在此添加控件通知处理程序代码
106     m_encode_para.encode_quality = m_quality_sld.GetPos();
107     SetInfoText();
108     *pResult = 0;
109 }
110