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_media_lib_dlg.Create(IDD_MEDIA_LIB_SETTING_DIALOG); 62 m_tab5_dlg.Create(IDD_HOT_KEY_SETTINGS_DIALOG); 63 64 //�����ӶԻ��� 65 m_tab_vect.push_back(&m_tab1_dlg); 66 m_tab_vect.push_back(&m_tab2_dlg); 67 m_tab_vect.push_back(&m_tab3_dlg); 68 m_tab_vect.push_back(&m_tab4_dlg); 69 m_tab_vect.push_back(&m_media_lib_dlg); 70 m_tab_vect.push_back(&m_tab5_dlg); 71 72 //��ȡ�ӶԻ���ij�ʼ�߶� 73 for (const auto* pDlg : m_tab_vect) 74 { 75 CRect rect; 76 pDlg->GetWindowRect(rect); 77 m_tab_height.push_back(rect.Height()); 78 } 79 80 //��ӶԻ��� 81 m_tab.AddWindow(&m_tab1_dlg, CCommon::LoadText(IDS_LYRIC_SETTINGS)); 82 m_tab.AddWindow(&m_tab2_dlg, CCommon::LoadText(IDS_APPEARANCE_SETTINGS)); 83 m_tab.AddWindow(&m_tab3_dlg, CCommon::LoadText(IDS_GENERAL_SETTINGS)); 84 m_tab.AddWindow(&m_tab4_dlg, CCommon::LoadText(IDS_PLAY_SETTINGS)); 85 m_tab.AddWindow(&m_media_lib_dlg, CCommon::LoadText(IDS_MEDIA_LIB)); 86 m_tab.AddWindow(&m_tab5_dlg, CCommon::LoadText(IDS_GLOBLE_HOTKEY)); 87 88 //Ϊÿ���Ӵ������ù�����Ϣ 89 for (size_t i = 0; i < m_tab_vect.size(); i++) 90 { 91 m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 92 } 93 94 if (m_tab_selected < 0 || m_tab_selected >= m_tab.GetItemCount()) 95 m_tab_selected = 0; 96 m_tab.SetCurTab(m_tab_selected); 97 98 return TRUE; // return TRUE unless you set the focus to a control 99 // �쳣: OCX ����ҳӦ���� FALSE 100 } 101 102 void COptionsDlg::OnOK() 103 { 104 // TODO: �ڴ����ר�ô����/����û��� 105 m_tab1_dlg.OnOK(); 106 m_tab2_dlg.OnOK(); 107 m_tab3_dlg.OnOK(); 108 109 CDialog::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 CDialog::OnDestroy(); 123 124 // TODO: �ڴ˴������Ϣ���������� 125 m_tab_selected = m_tab.GetCurSel(); 126 } 127 128 129 void COptionsDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI) 130 { 131 // TODO: �ڴ������Ϣ�����������/�����Ĭ��ֵ 132 //���ƴ�����С��С 133 lpMMI->ptMinTrackSize.x = m_min_size.cx; //������С��� 134 lpMMI->ptMinTrackSize.y = m_min_size.cy; //������С�߶� 135 136 CDialog::OnGetMinMaxInfo(lpMMI); 137 } 138 139 140 void COptionsDlg::OnSize(UINT nType, int cx, int cy) 141 { 142 CDialog::OnSize(nType, cx, cy); 143 if (nType != SIZE_MINIMIZED) 144 { 145 //Ϊÿ���Ӵ������ù�����Ϣ 146 for (size_t i = 0; i < m_tab_vect.size(); i++) 147 { 148 m_tab_vect[i]->ResetScroll(); 149 m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]); 150 } 151 152 } 153 154 // TODO: �ڴ˴������Ϣ���������� 155 } 156