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, CDialog) 13 14 COptionsDlg::COptionsDlg(CWnd* pParent /*=NULL*/) 15 : CDialog(IDD_OPTIONS_DIALOG, pParent) 16 { 17 18 } 19 20 COptionsDlg::~COptionsDlg() 21 { 22 } 23 24 void COptionsDlg::DoDataExchange(CDataExchange* pDX) 25 { 26 CDialog::DoDataExchange(pDX); 27 DDX_Control(pDX, IDC_OPTIONS_TAB, m_tab); 28 } 29 30 31 BEGIN_MESSAGE_MAP(COptionsDlg, CDialog) 32 ON_BN_CLICKED(IDC_APPLY_BUTTON, &COptionsDlg::OnBnClickedApplyButton) 33 ON_WM_DESTROY() 34 ON_WM_GETMINMAXINFO() 35 ON_WM_SIZE() 36 END_MESSAGE_MAP() 37 38 39 // COptionsDlg ��Ϣ������� 40 41 42 BOOL COptionsDlg::OnInitDialog() 43 { 44 CDialog::OnInitDialog(); 45 46 // TODO: �ڴ���Ӷ���ij�ʼ�� 47 48 SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME), FALSE); // ����Сͼ�� 49 50 //��ȡ��ʼʱ���ڵĴ�С 51 CRect rect; 52 GetWindowRect(rect); 53 m_min_size.cx = rect.Width(); 54 m_min_size.cy = rect.Height(); 55 56 //�����ӶԻ��� 57 m_tab1_dlg.Create(IDD_LYRIC_SETTING_DIALOG); 58 m_tab2_dlg.Create(IDD_APPEREANCE_SETTING_DLG); 59 m_tab3_dlg.Create(IDD_DATA_SETTINGS_DIALOG); 60 m_tab4_dlg.Create(IDD_PLAY_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_tab5_dlg); 69 70 //��ȡ�ӶԻ���ij�ʼ�߶� 71 for (const auto* pDlg : m_tab_vect) 72 { 73 CRect rect; 74 pDlg->GetWindowRect(rect); 75 m_tab_height.push_back(rect.Height()); 76 } 77 78 //��ӶԻ��� 79 m_tab.AddWindow(&m_tab1_dlg, CCommon::LoadText(IDS_LYRIC_SETTINGS)); 80 m_tab.AddWindow(&m_tab2_dlg, CCommon::LoadText(IDS_APPEARANCE_SETTINGS)); 81 m_tab.AddWindow(&m_tab3_dlg, CCommon::LoadText(IDS_GENERAL_SETTINGS)); 82 m_tab.AddWindow(&m_tab4_dlg, CCommon::LoadText(IDS_PLAY_SETTINGS)); 83 m_tab.AddWindow(&m_tab5_dlg, CCommon::LoadText(IDS_GLOBLE_HOTKEY)); 84 85 //Ϊÿ���Ӵ������ù�����Ϣ 86 for (size_t i = 0; i < m_tab_vect.size(); i++) 87 { 88 m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 89 } 90 91 if (m_tab_selected < 0 || m_tab_selected >= m_tab.GetItemCount()) 92 m_tab_selected = 0; 93 m_tab.SetCurTab(m_tab_selected); 94 95 return TRUE; // return TRUE unless you set the focus to a control 96 // �쳣: OCX ����ҳӦ���� FALSE 97 } 98 99 void COptionsDlg::OnOK() 100 { 101 // TODO: �ڴ����ר�ô����/����û��� 102 m_tab1_dlg.OnOK(); 103 m_tab2_dlg.OnOK(); 104 m_tab3_dlg.OnOK(); 105 106 CDialog::OnOK(); 107 } 108 109 110 void COptionsDlg::OnBnClickedApplyButton() 111 { 112 // TODO: �ڴ���ӿؼ�֪ͨ���������� 113 ::SendMessage(theApp.m_pMainWnd->GetSafeHwnd(), WM_SETTINGS_APPLIED, (WPARAM)this, 0); 114 } 115 116 117 void COptionsDlg::OnDestroy() 118 { 119 CDialog::OnDestroy(); 120 121 // TODO: �ڴ˴������Ϣ���������� 122 m_tab_selected = m_tab.GetCurSel(); 123 } 124 125 126 void COptionsDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) 127 { 128 // TODO: �ڴ������Ϣ�����������/�����Ĭ��ֵ 129 //���ƴ�����С��С 130 lpMMI->ptMinTrackSize.x = m_min_size.cx; //������С��� 131 lpMMI->ptMinTrackSize.y = m_min_size.cy; //������С�߶� 132 133 CDialog::OnGetMinMaxInfo(lpMMI); 134 } 135 136 137 void COptionsDlg::OnSize(UINT nType, int cx, int cy) 138 { 139 CDialog::OnSize(nType, cx, cy); 140 if (nType != SIZE_MINIMIZED) 141 { 142 //Ϊÿ���Ӵ������ù�����Ϣ 143 for (size_t i = 0; i < m_tab_vect.size(); i++) 144 { 145 m_tab_vect[i]->ResetScroll(); 146 m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 147 } 148 149 } 150 151 // TODO: �ڴ˴������Ϣ���������� 152 } 153