1877f5f92SZhongYang // OptionsDlg.cpp : 实现文件 2f5eefe2fSzhongyang219 // 3f5eefe2fSzhongyang219 4f5eefe2fSzhongyang219 #include "stdafx.h" 5f5eefe2fSzhongyang219 #include "MusicPlayer2.h" 6f5eefe2fSzhongyang219 #include "OptionsDlg.h" 7f5eefe2fSzhongyang219 8f5eefe2fSzhongyang219 9877f5f92SZhongYang // COptionsDlg 对话框 10f5eefe2fSzhongyang219 11d5347edbSZhong Yang IMPLEMENT_DYNAMIC(COptionsDlg, CBaseDialog) 12f5eefe2fSzhongyang219 13f5eefe2fSzhongyang219 COptionsDlg::COptionsDlg(CWnd* pParent /*=NULL*/) 14d5347edbSZhong Yang : CBaseDialog(IDD_OPTIONS_DIALOG, pParent) 15f5eefe2fSzhongyang219 { 16f5eefe2fSzhongyang219 17f5eefe2fSzhongyang219 } 18f5eefe2fSzhongyang219 19f5eefe2fSzhongyang219 COptionsDlg::~COptionsDlg() 20f5eefe2fSzhongyang219 { 21f5eefe2fSzhongyang219 } 22f5eefe2fSzhongyang219 23d5347edbSZhong Yang CString COptionsDlg::GetDialogName() const 24d5347edbSZhong Yang { 25d5347edbSZhong Yang return _T("OptionsDlg"); 26d5347edbSZhong Yang } 27d5347edbSZhong Yang 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 44f5eefe2fSzhongyang219 void COptionsDlg::DoDataExchange(CDataExchange* pDX) 45f5eefe2fSzhongyang219 { 46d5347edbSZhong Yang CBaseDialog::DoDataExchange(pDX); 47f5eefe2fSzhongyang219 DDX_Control(pDX, IDC_OPTIONS_TAB, m_tab); 48f5eefe2fSzhongyang219 } 49f5eefe2fSzhongyang219 50f5eefe2fSzhongyang219 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 68*a87de172Slrisora 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 //添加对话框 9526cefa3cSlrisora m_tab.AddWindow(&m_tab1_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_LRC").c_str()); 9626cefa3cSlrisora m_tab.AddWindow(&m_tab2_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_APC").c_str()); 9726cefa3cSlrisora m_tab.AddWindow(&m_tab3_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_DATA").c_str()); 9826cefa3cSlrisora m_tab.AddWindow(&m_tab4_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_PLAY").c_str()); 9926cefa3cSlrisora m_tab.AddWindow(&m_media_lib_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_MEDIA_LIB").c_str()); 10026cefa3cSlrisora m_tab.AddWindow(&m_tab5_dlg, theApp.m_str_table.LoadText(L"TITLE_OPT_HOT_KEY").c_str()); 101bb1ccb84SZhong Yang 1025a7e7f92Szhongyang219 //为每个标签添加图标 1035a7e7f92Szhongyang219 CImageList ImageList; 1045a7e7f92Szhongyang219 ImageList.Create(theApp.DPI(16), theApp.DPI(16), ILC_COLOR32 | ILC_MASK, 2, 2); 1055a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.lyric.GetIcon(true)); 1065a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.skin.GetIcon(true)); 1075a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.setting.GetIcon(true)); 1085a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.play_new.GetIcon(true)); 1095a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.media_lib.GetIcon(true)); 1105a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.hot_key); 1115a7e7f92Szhongyang219 m_tab.SetImageList(&ImageList); 1125a7e7f92Szhongyang219 ImageList.Detach(); 1135a7e7f92Szhongyang219 1145a7e7f92Szhongyang219 m_tab.SetItemSize(CSize(theApp.DPI(60), theApp.DPI(24))); 1155a7e7f92Szhongyang219 m_tab.AdjustTabWindowSize(); 1165a7e7f92Szhongyang219 117877f5f92SZhongYang //为每个子窗口设置滚动信息 11897b7b8c3Szhongyang for (size_t i = 0; i < m_tab_vect.size(); i++) 1193cbff0c7SZhong Yang { 12097b7b8c3Szhongyang m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 1213cbff0c7SZhong Yang } 1223cbff0c7SZhong Yang 1235f54c046SZhong Yang if (m_tab_selected < 0 || m_tab_selected >= m_tab.GetItemCount()) 1245f54c046SZhong Yang m_tab_selected = 0; 125bb1ccb84SZhong Yang m_tab.SetCurTab(m_tab_selected); 126bb1ccb84SZhong Yang 127f5eefe2fSzhongyang219 return TRUE; // return TRUE unless you set the focus to a control 128877f5f92SZhongYang // 异常: OCX 属性页应返回 FALSE 129f5eefe2fSzhongyang219 } 130f5eefe2fSzhongyang219 131575ff337SZhong Yang void COptionsDlg::OnOK() 132575ff337SZhong Yang { 133877f5f92SZhongYang // TODO: 在此添加专用代码和/或调用基类 13409e0bd68Szhongyang219 for (const auto& tab : m_tab_vect) 13509e0bd68Szhongyang219 { 13609e0bd68Szhongyang219 tab->GetDataFromUi(); 13709e0bd68Szhongyang219 } 138575ff337SZhong Yang 139d5347edbSZhong Yang CBaseDialog::OnOK(); 140575ff337SZhong Yang } 1415d218daaSZhong Yang 1425d218daaSZhong Yang 1435d218daaSZhong Yang void COptionsDlg::OnBnClickedApplyButton() 1445d218daaSZhong Yang { 145877f5f92SZhongYang // TODO: 在此添加控件通知处理程序代码 14609e0bd68Szhongyang219 for (const auto& tab : m_tab_vect) 14709e0bd68Szhongyang219 { 14809e0bd68Szhongyang219 tab->GetDataFromUi(); 14909e0bd68Szhongyang219 } 15009e0bd68Szhongyang219 1515d218daaSZhong Yang ::SendMessage(theApp.m_pMainWnd->GetSafeHwnd(), WM_SETTINGS_APPLIED, (WPARAM)this, 0); 152f94887a5Slrisora 153f94887a5Slrisora for (const auto& tab : m_tab_vect) 154f94887a5Slrisora { 155f94887a5Slrisora tab->ApplyDataToUi(); 156f94887a5Slrisora } 1575d218daaSZhong Yang } 158b26f7c9eSZhong Yang 159b26f7c9eSZhong Yang 160b26f7c9eSZhong Yang void COptionsDlg::OnDestroy() 161b26f7c9eSZhong Yang { 162d5347edbSZhong Yang CBaseDialog::OnDestroy(); 163b26f7c9eSZhong Yang 164877f5f92SZhongYang // TODO: 在此处添加消息处理程序代码 165b26f7c9eSZhong Yang m_tab_selected = m_tab.GetCurSel(); 166b26f7c9eSZhong Yang } 16797b7b8c3Szhongyang 16897b7b8c3Szhongyang 16997b7b8c3Szhongyang void COptionsDlg::OnSize(UINT nType, int cx, int cy) 17097b7b8c3Szhongyang { 171d5347edbSZhong Yang CBaseDialog::OnSize(nType, cx, cy); 17297b7b8c3Szhongyang if (nType != SIZE_MINIMIZED) 17397b7b8c3Szhongyang { 17451ca5229Slrisora //为每个子窗口更新滚动信息 17597b7b8c3Szhongyang for (size_t i = 0; i < m_tab_vect.size(); i++) 17697b7b8c3Szhongyang { 17797b7b8c3Szhongyang m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 17897b7b8c3Szhongyang } 17997b7b8c3Szhongyang } 18097b7b8c3Szhongyang } 181