1877f5f92SZhongYang // OptionsDlg.cpp : 实现文件
2f5eefe2fSzhongyang219 //
3f5eefe2fSzhongyang219
4f5eefe2fSzhongyang219 #include "stdafx.h"
5f5eefe2fSzhongyang219 #include "MusicPlayer2.h"
6f5eefe2fSzhongyang219 #include "OptionsDlg.h"
7f5eefe2fSzhongyang219
8f5eefe2fSzhongyang219
9877f5f92SZhongYang // COptionsDlg 对话框
10f5eefe2fSzhongyang219
IMPLEMENT_DYNAMIC(COptionsDlg,CBaseDialog)11d5347edbSZhong Yang IMPLEMENT_DYNAMIC(COptionsDlg, CBaseDialog)
12f5eefe2fSzhongyang219
13f5eefe2fSzhongyang219 COptionsDlg::COptionsDlg(CWnd* pParent /*=NULL*/)
14d5347edbSZhong Yang : CBaseDialog(IDD_OPTIONS_DIALOG, pParent)
15f5eefe2fSzhongyang219 {
16f5eefe2fSzhongyang219
17f5eefe2fSzhongyang219 }
18f5eefe2fSzhongyang219
~COptionsDlg()19f5eefe2fSzhongyang219 COptionsDlg::~COptionsDlg()
20f5eefe2fSzhongyang219 {
21f5eefe2fSzhongyang219 }
22f5eefe2fSzhongyang219
GetDialogName() const23d5347edbSZhong Yang CString COptionsDlg::GetDialogName() const
24d5347edbSZhong Yang {
25d5347edbSZhong Yang return _T("OptionsDlg");
26d5347edbSZhong Yang }
27d5347edbSZhong Yang
InitializeControls()286ff78c2aSlrisora bool COptionsDlg::InitializeControls()
296ff78c2aSlrisora {
306ff78c2aSlrisora wstring temp;
316ff78c2aSlrisora temp = theApp.m_str_table.LoadText(L"TITLE_OPT");
326ff78c2aSlrisora SetWindowTextW(temp.c_str());
336ff78c2aSlrisora temp = theApp.m_str_table.LoadText(L"TXT_APPLY");
346ff78c2aSlrisora SetDlgItemTextW(IDC_APPLY_BUTTON, temp.c_str());
356ff78c2aSlrisora
366ff78c2aSlrisora RepositionTextBasedControls({
376ff78c2aSlrisora { CtrlTextInfo::R1, IDOK, CtrlTextInfo::W32 },
386ff78c2aSlrisora { CtrlTextInfo::R2, IDCANCEL, CtrlTextInfo::W32 },
396ff78c2aSlrisora { CtrlTextInfo::R3, IDC_APPLY_BUTTON, CtrlTextInfo::W32 }
406ff78c2aSlrisora });
416ff78c2aSlrisora return true;
426ff78c2aSlrisora }
436ff78c2aSlrisora
DoDataExchange(CDataExchange * pDX)44f5eefe2fSzhongyang219 void COptionsDlg::DoDataExchange(CDataExchange* pDX)
45f5eefe2fSzhongyang219 {
46d5347edbSZhong Yang CBaseDialog::DoDataExchange(pDX);
47f5eefe2fSzhongyang219 DDX_Control(pDX, IDC_OPTIONS_TAB, m_tab);
48f5eefe2fSzhongyang219 }
49f5eefe2fSzhongyang219
50f5eefe2fSzhongyang219
BEGIN_MESSAGE_MAP(COptionsDlg,CBaseDialog)51d5347edbSZhong Yang BEGIN_MESSAGE_MAP(COptionsDlg, CBaseDialog)
525d218daaSZhong Yang ON_BN_CLICKED(IDC_APPLY_BUTTON, &COptionsDlg::OnBnClickedApplyButton)
53b26f7c9eSZhong Yang ON_WM_DESTROY()
5497b7b8c3Szhongyang ON_WM_GETMINMAXINFO()
5597b7b8c3Szhongyang ON_WM_SIZE()
56f5eefe2fSzhongyang219 END_MESSAGE_MAP()
57f5eefe2fSzhongyang219
58f5eefe2fSzhongyang219
59877f5f92SZhongYang // COptionsDlg 消息处理程序
60f5eefe2fSzhongyang219
61f5eefe2fSzhongyang219
62f5eefe2fSzhongyang219 BOOL COptionsDlg::OnInitDialog()
63f5eefe2fSzhongyang219 {
64d5347edbSZhong Yang CBaseDialog::OnInitDialog();
65f5eefe2fSzhongyang219
66877f5f92SZhongYang // TODO: 在此添加额外的初始化
67f5eefe2fSzhongyang219
68a87de172Slrisora SetIcon(IconMgr::IconType::IT_Setting, FALSE);
6997b7b8c3Szhongyang
70877f5f92SZhongYang //创建子对话框
71bb1ccb84SZhong Yang m_tab1_dlg.Create(IDD_LYRIC_SETTING_DIALOG);
72bb1ccb84SZhong Yang m_tab2_dlg.Create(IDD_APPEREANCE_SETTING_DLG);
73bb1ccb84SZhong Yang m_tab3_dlg.Create(IDD_DATA_SETTINGS_DIALOG);
74bb1ccb84SZhong Yang m_tab4_dlg.Create(IDD_PLAY_SETTING_DIALOG);
75199afb4bSzhongyang m_media_lib_dlg.Create(IDD_MEDIA_LIB_SETTING_DIALOG);
769afaa4f1SZhong Yang m_tab5_dlg.Create(IDD_HOT_KEY_SETTINGS_DIALOG);
77bb1ccb84SZhong Yang
78877f5f92SZhongYang //保存子对话框
7997b7b8c3Szhongyang m_tab_vect.push_back(&m_tab1_dlg);
8097b7b8c3Szhongyang m_tab_vect.push_back(&m_tab2_dlg);
8197b7b8c3Szhongyang m_tab_vect.push_back(&m_tab3_dlg);
8297b7b8c3Szhongyang m_tab_vect.push_back(&m_tab4_dlg);
83199afb4bSzhongyang m_tab_vect.push_back(&m_media_lib_dlg);
8497b7b8c3Szhongyang m_tab_vect.push_back(&m_tab5_dlg);
853cbff0c7SZhong Yang
86877f5f92SZhongYang //获取子对话框的初始高度
8797b7b8c3Szhongyang for (const auto* pDlg : m_tab_vect)
883cbff0c7SZhong Yang {
893cbff0c7SZhong Yang CRect rect;
903cbff0c7SZhong Yang pDlg->GetWindowRect(rect);
9197b7b8c3Szhongyang m_tab_height.push_back(rect.Height());
923cbff0c7SZhong Yang }
933cbff0c7SZhong Yang
94877f5f92SZhongYang //添加对话框
95*ccb67e16Slrisora m_tab.AddWindow(&m_tab1_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_LRC").c_str(), IconMgr::IconType::IT_Lyric);
96*ccb67e16Slrisora m_tab.AddWindow(&m_tab2_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_APC").c_str(), IconMgr::IconType::IT_Skin);
97*ccb67e16Slrisora m_tab.AddWindow(&m_tab3_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_DATA").c_str(), IconMgr::IconType::IT_Setting);
98*ccb67e16Slrisora m_tab.AddWindow(&m_tab4_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_PLAY").c_str(), IconMgr::IconType::IT_Play);
99*ccb67e16Slrisora m_tab.AddWindow(&m_media_lib_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_MEDIA_LIB").c_str(), IconMgr::IconType::IT_Media_Lib);
100*ccb67e16Slrisora m_tab.AddWindow(&m_tab5_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_HOT_KEY").c_str(), IconMgr::IconType::IT_Key_Board);
1015a7e7f92Szhongyang219
1025a7e7f92Szhongyang219 m_tab.SetItemSize(CSize(theApp.DPI(60), theApp.DPI(24)));
1035a7e7f92Szhongyang219 m_tab.AdjustTabWindowSize();
1045a7e7f92Szhongyang219
105877f5f92SZhongYang //为每个子窗口设置滚动信息
10697b7b8c3Szhongyang for (size_t i = 0; i < m_tab_vect.size(); i++)
1073cbff0c7SZhong Yang {
10897b7b8c3Szhongyang m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]);
1093cbff0c7SZhong Yang }
1103cbff0c7SZhong Yang
1115f54c046SZhong Yang if (m_tab_selected < 0 || m_tab_selected >= m_tab.GetItemCount())
1125f54c046SZhong Yang m_tab_selected = 0;
113bb1ccb84SZhong Yang m_tab.SetCurTab(m_tab_selected);
114bb1ccb84SZhong Yang
115f5eefe2fSzhongyang219 return TRUE; // return TRUE unless you set the focus to a control
116877f5f92SZhongYang // 异常: OCX 属性页应返回 FALSE
117f5eefe2fSzhongyang219 }
118f5eefe2fSzhongyang219
OnOK()119575ff337SZhong Yang void COptionsDlg::OnOK()
120575ff337SZhong Yang {
121877f5f92SZhongYang // TODO: 在此添加专用代码和/或调用基类
12209e0bd68Szhongyang219 for (const auto& tab : m_tab_vect)
12309e0bd68Szhongyang219 {
12409e0bd68Szhongyang219 tab->GetDataFromUi();
12509e0bd68Szhongyang219 }
126575ff337SZhong Yang
127d5347edbSZhong Yang CBaseDialog::OnOK();
128575ff337SZhong Yang }
1295d218daaSZhong Yang
1305d218daaSZhong Yang
OnBnClickedApplyButton()1315d218daaSZhong Yang void COptionsDlg::OnBnClickedApplyButton()
1325d218daaSZhong Yang {
133877f5f92SZhongYang // TODO: 在此添加控件通知处理程序代码
13409e0bd68Szhongyang219 for (const auto& tab : m_tab_vect)
13509e0bd68Szhongyang219 {
13609e0bd68Szhongyang219 tab->GetDataFromUi();
13709e0bd68Szhongyang219 }
13809e0bd68Szhongyang219
1395d218daaSZhong Yang ::SendMessage(theApp.m_pMainWnd->GetSafeHwnd(), WM_SETTINGS_APPLIED, (WPARAM)this, 0);
140f94887a5Slrisora
141f94887a5Slrisora for (const auto& tab : m_tab_vect)
142f94887a5Slrisora {
143f94887a5Slrisora tab->ApplyDataToUi();
144f94887a5Slrisora }
1455d218daaSZhong Yang }
146b26f7c9eSZhong Yang
147b26f7c9eSZhong Yang
OnDestroy()148b26f7c9eSZhong Yang void COptionsDlg::OnDestroy()
149b26f7c9eSZhong Yang {
150d5347edbSZhong Yang CBaseDialog::OnDestroy();
151b26f7c9eSZhong Yang
152877f5f92SZhongYang // TODO: 在此处添加消息处理程序代码
153b26f7c9eSZhong Yang m_tab_selected = m_tab.GetCurSel();
154b26f7c9eSZhong Yang }
15597b7b8c3Szhongyang
15697b7b8c3Szhongyang
OnSize(UINT nType,int cx,int cy)15797b7b8c3Szhongyang void COptionsDlg::OnSize(UINT nType, int cx, int cy)
15897b7b8c3Szhongyang {
159d5347edbSZhong Yang CBaseDialog::OnSize(nType, cx, cy);
16097b7b8c3Szhongyang if (nType != SIZE_MINIMIZED)
16197b7b8c3Szhongyang {
16251ca5229Slrisora //为每个子窗口更新滚动信息
16397b7b8c3Szhongyang for (size_t i = 0; i < m_tab_vect.size(); i++)
16497b7b8c3Szhongyang {
16597b7b8c3Szhongyang m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]);
16697b7b8c3Szhongyang }
16797b7b8c3Szhongyang }
16897b7b8c3Szhongyang }
169