1877f5f92SZhongYang // OptionsDlg.cpp : 实现文件 2f5eefe2fSzhongyang219 // 3f5eefe2fSzhongyang219 4f5eefe2fSzhongyang219 #include "stdafx.h" 5f5eefe2fSzhongyang219 #include "MusicPlayer2.h" 6f5eefe2fSzhongyang219 #include "OptionsDlg.h" 7f5eefe2fSzhongyang219 #include "afxdialogex.h" 8f5eefe2fSzhongyang219 9f5eefe2fSzhongyang219 10877f5f92SZhongYang // COptionsDlg 对话框 11f5eefe2fSzhongyang219 12d5347edbSZhong Yang IMPLEMENT_DYNAMIC(COptionsDlg, CBaseDialog) 13f5eefe2fSzhongyang219 14f5eefe2fSzhongyang219 COptionsDlg::COptionsDlg(CWnd* pParent /*=NULL*/) 15d5347edbSZhong Yang : CBaseDialog(IDD_OPTIONS_DIALOG, pParent) 16f5eefe2fSzhongyang219 { 17f5eefe2fSzhongyang219 18f5eefe2fSzhongyang219 } 19f5eefe2fSzhongyang219 20f5eefe2fSzhongyang219 COptionsDlg::~COptionsDlg() 21f5eefe2fSzhongyang219 { 22f5eefe2fSzhongyang219 } 23f5eefe2fSzhongyang219 24d5347edbSZhong Yang CString COptionsDlg::GetDialogName() const 25d5347edbSZhong Yang { 26d5347edbSZhong Yang return _T("OptionsDlg"); 27d5347edbSZhong Yang } 28d5347edbSZhong Yang 29f5eefe2fSzhongyang219 void COptionsDlg::DoDataExchange(CDataExchange* pDX) 30f5eefe2fSzhongyang219 { 31d5347edbSZhong Yang CBaseDialog::DoDataExchange(pDX); 32f5eefe2fSzhongyang219 DDX_Control(pDX, IDC_OPTIONS_TAB, m_tab); 33f5eefe2fSzhongyang219 } 34f5eefe2fSzhongyang219 35f5eefe2fSzhongyang219 36d5347edbSZhong Yang BEGIN_MESSAGE_MAP(COptionsDlg, CBaseDialog) 375d218daaSZhong Yang ON_BN_CLICKED(IDC_APPLY_BUTTON, &COptionsDlg::OnBnClickedApplyButton) 38b26f7c9eSZhong Yang ON_WM_DESTROY() 3997b7b8c3Szhongyang ON_WM_GETMINMAXINFO() 4097b7b8c3Szhongyang ON_WM_SIZE() 41f5eefe2fSzhongyang219 END_MESSAGE_MAP() 42f5eefe2fSzhongyang219 43f5eefe2fSzhongyang219 44877f5f92SZhongYang // COptionsDlg 消息处理程序 45f5eefe2fSzhongyang219 46f5eefe2fSzhongyang219 47f5eefe2fSzhongyang219 BOOL COptionsDlg::OnInitDialog() 48f5eefe2fSzhongyang219 { 49d5347edbSZhong Yang CBaseDialog::OnInitDialog(); 50f5eefe2fSzhongyang219 51877f5f92SZhongYang // TODO: 在此添加额外的初始化 52f5eefe2fSzhongyang219 5399a4aeeaSZhong Yang SetIcon(theApp.m_icon_set.setting.GetIcon(true), FALSE); 5497b7b8c3Szhongyang 55877f5f92SZhongYang //创建子对话框 56bb1ccb84SZhong Yang m_tab1_dlg.Create(IDD_LYRIC_SETTING_DIALOG); 57bb1ccb84SZhong Yang m_tab2_dlg.Create(IDD_APPEREANCE_SETTING_DLG); 58bb1ccb84SZhong Yang m_tab3_dlg.Create(IDD_DATA_SETTINGS_DIALOG); 59bb1ccb84SZhong Yang m_tab4_dlg.Create(IDD_PLAY_SETTING_DIALOG); 60199afb4bSzhongyang m_media_lib_dlg.Create(IDD_MEDIA_LIB_SETTING_DIALOG); 619afaa4f1SZhong Yang m_tab5_dlg.Create(IDD_HOT_KEY_SETTINGS_DIALOG); 62bb1ccb84SZhong Yang 63877f5f92SZhongYang //保存子对话框 6497b7b8c3Szhongyang m_tab_vect.push_back(&m_tab1_dlg); 6597b7b8c3Szhongyang m_tab_vect.push_back(&m_tab2_dlg); 6697b7b8c3Szhongyang m_tab_vect.push_back(&m_tab3_dlg); 6797b7b8c3Szhongyang m_tab_vect.push_back(&m_tab4_dlg); 68199afb4bSzhongyang m_tab_vect.push_back(&m_media_lib_dlg); 6997b7b8c3Szhongyang m_tab_vect.push_back(&m_tab5_dlg); 703cbff0c7SZhong Yang 71877f5f92SZhongYang //获取子对话框的初始高度 7297b7b8c3Szhongyang for (const auto* pDlg : m_tab_vect) 733cbff0c7SZhong Yang { 743cbff0c7SZhong Yang CRect rect; 753cbff0c7SZhong Yang pDlg->GetWindowRect(rect); 7697b7b8c3Szhongyang m_tab_height.push_back(rect.Height()); 773cbff0c7SZhong Yang } 783cbff0c7SZhong Yang 79877f5f92SZhongYang //添加对话框 80d9d0c25bSZhong Yang m_tab.AddWindow(&m_tab1_dlg, CCommon::LoadText(IDS_LYRIC_SETTINGS)); 81d9d0c25bSZhong Yang m_tab.AddWindow(&m_tab2_dlg, CCommon::LoadText(IDS_APPEARANCE_SETTINGS)); 82d9d0c25bSZhong Yang m_tab.AddWindow(&m_tab3_dlg, CCommon::LoadText(IDS_GENERAL_SETTINGS)); 83d9d0c25bSZhong Yang m_tab.AddWindow(&m_tab4_dlg, CCommon::LoadText(IDS_PLAY_SETTINGS)); 84199afb4bSzhongyang m_tab.AddWindow(&m_media_lib_dlg, CCommon::LoadText(IDS_MEDIA_LIB)); 85d9d0c25bSZhong Yang m_tab.AddWindow(&m_tab5_dlg, CCommon::LoadText(IDS_GLOBLE_HOTKEY)); 86bb1ccb84SZhong Yang 87*5a7e7f92Szhongyang219 //为每个标签添加图标 88*5a7e7f92Szhongyang219 CImageList ImageList; 89*5a7e7f92Szhongyang219 ImageList.Create(theApp.DPI(16), theApp.DPI(16), ILC_COLOR32 | ILC_MASK, 2, 2); 90*5a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.lyric.GetIcon(true)); 91*5a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.skin.GetIcon(true)); 92*5a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.setting.GetIcon(true)); 93*5a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.play_new.GetIcon(true)); 94*5a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.media_lib.GetIcon(true)); 95*5a7e7f92Szhongyang219 ImageList.Add(theApp.m_icon_set.hot_key); 96*5a7e7f92Szhongyang219 m_tab.SetImageList(&ImageList); 97*5a7e7f92Szhongyang219 ImageList.Detach(); 98*5a7e7f92Szhongyang219 99*5a7e7f92Szhongyang219 m_tab.SetItemSize(CSize(theApp.DPI(60), theApp.DPI(24))); 100*5a7e7f92Szhongyang219 m_tab.AdjustTabWindowSize(); 101*5a7e7f92Szhongyang219 102877f5f92SZhongYang //为每个子窗口设置滚动信息 10397b7b8c3Szhongyang for (size_t i = 0; i < m_tab_vect.size(); i++) 1043cbff0c7SZhong Yang { 10597b7b8c3Szhongyang m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 1063cbff0c7SZhong Yang } 1073cbff0c7SZhong Yang 1085f54c046SZhong Yang if (m_tab_selected < 0 || m_tab_selected >= m_tab.GetItemCount()) 1095f54c046SZhong Yang m_tab_selected = 0; 110bb1ccb84SZhong Yang m_tab.SetCurTab(m_tab_selected); 111bb1ccb84SZhong Yang 112f5eefe2fSzhongyang219 return TRUE; // return TRUE unless you set the focus to a control 113877f5f92SZhongYang // 异常: OCX 属性页应返回 FALSE 114f5eefe2fSzhongyang219 } 115f5eefe2fSzhongyang219 116575ff337SZhong Yang void COptionsDlg::OnOK() 117575ff337SZhong Yang { 118877f5f92SZhongYang // TODO: 在此添加专用代码和/或调用基类 11909e0bd68Szhongyang219 for (const auto& tab : m_tab_vect) 12009e0bd68Szhongyang219 { 12109e0bd68Szhongyang219 tab->GetDataFromUi(); 12209e0bd68Szhongyang219 } 123575ff337SZhong Yang 124d5347edbSZhong Yang CBaseDialog::OnOK(); 125575ff337SZhong Yang } 1265d218daaSZhong Yang 1275d218daaSZhong Yang 1285d218daaSZhong Yang void COptionsDlg::OnBnClickedApplyButton() 1295d218daaSZhong Yang { 130877f5f92SZhongYang // TODO: 在此添加控件通知处理程序代码 13109e0bd68Szhongyang219 for (const auto& tab : m_tab_vect) 13209e0bd68Szhongyang219 { 13309e0bd68Szhongyang219 tab->GetDataFromUi(); 13409e0bd68Szhongyang219 } 13509e0bd68Szhongyang219 1365d218daaSZhong Yang ::SendMessage(theApp.m_pMainWnd->GetSafeHwnd(), WM_SETTINGS_APPLIED, (WPARAM)this, 0); 137f94887a5Slrisora 138f94887a5Slrisora for (const auto& tab : m_tab_vect) 139f94887a5Slrisora { 140f94887a5Slrisora tab->ApplyDataToUi(); 141f94887a5Slrisora } 1425d218daaSZhong Yang } 143b26f7c9eSZhong Yang 144b26f7c9eSZhong Yang 145b26f7c9eSZhong Yang void COptionsDlg::OnDestroy() 146b26f7c9eSZhong Yang { 147d5347edbSZhong Yang CBaseDialog::OnDestroy(); 148b26f7c9eSZhong Yang 149877f5f92SZhongYang // TODO: 在此处添加消息处理程序代码 150b26f7c9eSZhong Yang m_tab_selected = m_tab.GetCurSel(); 151b26f7c9eSZhong Yang } 15297b7b8c3Szhongyang 15397b7b8c3Szhongyang 15497b7b8c3Szhongyang void COptionsDlg::OnSize(UINT nType, int cx, int cy) 15597b7b8c3Szhongyang { 156d5347edbSZhong Yang CBaseDialog::OnSize(nType, cx, cy); 15797b7b8c3Szhongyang if (nType != SIZE_MINIMIZED) 15897b7b8c3Szhongyang { 159877f5f92SZhongYang //为每个子窗口设置滚动信息 16097b7b8c3Szhongyang for (size_t i = 0; i < m_tab_vect.size(); i++) 16197b7b8c3Szhongyang { 16297b7b8c3Szhongyang m_tab_vect[i]->ResetScroll(); 16397b7b8c3Szhongyang m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 16497b7b8c3Szhongyang } 16597b7b8c3Szhongyang 16697b7b8c3Szhongyang } 16797b7b8c3Szhongyang 168877f5f92SZhongYang // TODO: 在此处添加消息处理程序代码 16997b7b8c3Szhongyang } 170