1 // OptionsDlg.cpp : 实现文件 2 // 3 4 #include "stdafx.h" 5 #include "MusicPlayer2.h" 6 #include "OptionsDlg.h" 7 #include "afxdialogex.h" 8 9 10 // COptionsDlg 对话框 11 12 IMPLEMENT_DYNAMIC(COptionsDlg, CBaseDialog) 13 14 COptionsDlg::COptionsDlg(CWnd* pParent /*=NULL*/) 15 : CBaseDialog(IDD_OPTIONS_DIALOG, pParent) 16 { 17 18 } 19 20 COptionsDlg::~COptionsDlg() 21 { 22 } 23 24 CString COptionsDlg::GetDialogName() const 25 { 26 return _T("OptionsDlg"); 27 } 28 29 void COptionsDlg::DoDataExchange(CDataExchange* pDX) 30 { 31 CBaseDialog::DoDataExchange(pDX); 32 DDX_Control(pDX, IDC_OPTIONS_TAB, m_tab); 33 } 34 35 36 BEGIN_MESSAGE_MAP(COptionsDlg, CBaseDialog) 37 ON_BN_CLICKED(IDC_APPLY_BUTTON, &COptionsDlg::OnBnClickedApplyButton) 38 ON_WM_DESTROY() 39 ON_WM_GETMINMAXINFO() 40 ON_WM_SIZE() 41 END_MESSAGE_MAP() 42 43 44 // COptionsDlg 消息处理程序 45 46 47 BOOL COptionsDlg::OnInitDialog() 48 { 49 CBaseDialog::OnInitDialog(); 50 51 // TODO: 在此添加额外的初始化 52 53 SetIcon(theApp.m_icon_set.setting.GetIcon(true), FALSE); 54 55 //创建子对话框 56 m_tab1_dlg.Create(IDD_LYRIC_SETTING_DIALOG); 57 m_tab2_dlg.Create(IDD_APPEREANCE_SETTING_DLG); 58 m_tab3_dlg.Create(IDD_DATA_SETTINGS_DIALOG); 59 m_tab4_dlg.Create(IDD_PLAY_SETTING_DIALOG); 60 m_media_lib_dlg.Create(IDD_MEDIA_LIB_SETTING_DIALOG); 61 m_tab5_dlg.Create(IDD_HOT_KEY_SETTINGS_DIALOG); 62 63 //保存子对话框 64 m_tab_vect.push_back(&m_tab1_dlg); 65 m_tab_vect.push_back(&m_tab2_dlg); 66 m_tab_vect.push_back(&m_tab3_dlg); 67 m_tab_vect.push_back(&m_tab4_dlg); 68 m_tab_vect.push_back(&m_media_lib_dlg); 69 m_tab_vect.push_back(&m_tab5_dlg); 70 71 //获取子对话框的初始高度 72 for (const auto* pDlg : m_tab_vect) 73 { 74 CRect rect; 75 pDlg->GetWindowRect(rect); 76 m_tab_height.push_back(rect.Height()); 77 } 78 79 //添加对话框 80 m_tab.AddWindow(&m_tab1_dlg, CCommon::LoadText(IDS_LYRIC_SETTINGS)); 81 m_tab.AddWindow(&m_tab2_dlg, CCommon::LoadText(IDS_APPEARANCE_SETTINGS)); 82 m_tab.AddWindow(&m_tab3_dlg, CCommon::LoadText(IDS_GENERAL_SETTINGS)); 83 m_tab.AddWindow(&m_tab4_dlg, CCommon::LoadText(IDS_PLAY_SETTINGS)); 84 m_tab.AddWindow(&m_media_lib_dlg, CCommon::LoadText(IDS_MEDIA_LIB)); 85 m_tab.AddWindow(&m_tab5_dlg, CCommon::LoadText(IDS_GLOBLE_HOTKEY)); 86 87 //为每个子窗口设置滚动信息 88 for (size_t i = 0; i < m_tab_vect.size(); i++) 89 { 90 m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 91 } 92 93 if (m_tab_selected < 0 || m_tab_selected >= m_tab.GetItemCount()) 94 m_tab_selected = 0; 95 m_tab.SetCurTab(m_tab_selected); 96 97 return TRUE; // return TRUE unless you set the focus to a control 98 // 异常: OCX 属性页应返回 FALSE 99 } 100 101 void COptionsDlg::OnOK() 102 { 103 // TODO: 在此添加专用代码和/或调用基类 104 m_tab1_dlg.OnOK(); 105 m_tab2_dlg.OnOK(); 106 m_tab3_dlg.OnOK(); 107 m_media_lib_dlg.OnOK(); 108 109 CBaseDialog::OnOK(); 110 } 111 112 113 void COptionsDlg::OnBnClickedApplyButton() 114 { 115 // TODO: 在此添加控件通知处理程序代码 116 ::SendMessage(theApp.m_pMainWnd->GetSafeHwnd(), WM_SETTINGS_APPLIED, (WPARAM)this, 0); 117 } 118 119 120 void COptionsDlg::OnDestroy() 121 { 122 CBaseDialog::OnDestroy(); 123 124 // TODO: 在此处添加消息处理程序代码 125 m_tab_selected = m_tab.GetCurSel(); 126 } 127 128 129 void COptionsDlg::OnSize(UINT nType, int cx, int cy) 130 { 131 CBaseDialog::OnSize(nType, cx, cy); 132 if (nType != SIZE_MINIMIZED) 133 { 134 //为每个子窗口设置滚动信息 135 for (size_t i = 0; i < m_tab_vect.size(); i++) 136 { 137 m_tab_vect[i]->ResetScroll(); 138 m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 139 } 140 141 } 142 143 // TODO: 在此处添加消息处理程序代码 144 } 145