xref: /MusicPlayer2/MusicPlayer2/OptionsDlg.cpp (revision 3bbfe61493ac5233d7ce8ca64697d34a45aa45b0)
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