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 87877f5f92SZhongYang //为每个子窗口设置滚动信息 8897b7b8c3Szhongyang for (size_t i = 0; i < m_tab_vect.size(); i++) 893cbff0c7SZhong Yang { 9097b7b8c3Szhongyang m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 913cbff0c7SZhong Yang } 923cbff0c7SZhong Yang 935f54c046SZhong Yang if (m_tab_selected < 0 || m_tab_selected >= m_tab.GetItemCount()) 945f54c046SZhong Yang m_tab_selected = 0; 95bb1ccb84SZhong Yang m_tab.SetCurTab(m_tab_selected); 96bb1ccb84SZhong Yang 97f5eefe2fSzhongyang219 return TRUE; // return TRUE unless you set the focus to a control 98877f5f92SZhongYang // 异常: OCX 属性页应返回 FALSE 99f5eefe2fSzhongyang219 } 100f5eefe2fSzhongyang219 101575ff337SZhong Yang void COptionsDlg::OnOK() 102575ff337SZhong Yang { 103877f5f92SZhongYang // TODO: 在此添加专用代码和/或调用基类 10409e0bd68Szhongyang219 for (const auto& tab : m_tab_vect) 10509e0bd68Szhongyang219 { 10609e0bd68Szhongyang219 tab->GetDataFromUi(); 10709e0bd68Szhongyang219 } 108575ff337SZhong Yang 109d5347edbSZhong Yang CBaseDialog::OnOK(); 110575ff337SZhong Yang } 1115d218daaSZhong Yang 1125d218daaSZhong Yang 1135d218daaSZhong Yang void COptionsDlg::OnBnClickedApplyButton() 1145d218daaSZhong Yang { 115877f5f92SZhongYang // TODO: 在此添加控件通知处理程序代码 11609e0bd68Szhongyang219 for (const auto& tab : m_tab_vect) 11709e0bd68Szhongyang219 { 11809e0bd68Szhongyang219 tab->GetDataFromUi(); 11909e0bd68Szhongyang219 } 12009e0bd68Szhongyang219 1215d218daaSZhong Yang ::SendMessage(theApp.m_pMainWnd->GetSafeHwnd(), WM_SETTINGS_APPLIED, (WPARAM)this, 0); 122*f94887a5Slrisora 123*f94887a5Slrisora for (const auto& tab : m_tab_vect) 124*f94887a5Slrisora { 125*f94887a5Slrisora tab->ApplyDataToUi(); 126*f94887a5Slrisora } 1275d218daaSZhong Yang } 128b26f7c9eSZhong Yang 129b26f7c9eSZhong Yang 130b26f7c9eSZhong Yang void COptionsDlg::OnDestroy() 131b26f7c9eSZhong Yang { 132d5347edbSZhong Yang CBaseDialog::OnDestroy(); 133b26f7c9eSZhong Yang 134877f5f92SZhongYang // TODO: 在此处添加消息处理程序代码 135b26f7c9eSZhong Yang m_tab_selected = m_tab.GetCurSel(); 136b26f7c9eSZhong Yang } 13797b7b8c3Szhongyang 13897b7b8c3Szhongyang 13997b7b8c3Szhongyang void COptionsDlg::OnSize(UINT nType, int cx, int cy) 14097b7b8c3Szhongyang { 141d5347edbSZhong Yang CBaseDialog::OnSize(nType, cx, cy); 14297b7b8c3Szhongyang if (nType != SIZE_MINIMIZED) 14397b7b8c3Szhongyang { 144877f5f92SZhongYang //为每个子窗口设置滚动信息 14597b7b8c3Szhongyang for (size_t i = 0; i < m_tab_vect.size(); i++) 14697b7b8c3Szhongyang { 14797b7b8c3Szhongyang m_tab_vect[i]->ResetScroll(); 14897b7b8c3Szhongyang m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 14997b7b8c3Szhongyang } 15097b7b8c3Szhongyang 15197b7b8c3Szhongyang } 15297b7b8c3Szhongyang 153877f5f92SZhongYang // TODO: 在此处添加消息处理程序代码 15497b7b8c3Szhongyang } 155