xref: /MusicPlayer2/MusicPlayer2/OptionsDlg.cpp (revision 97b7b8c3a49b4c14c1e4c918fc1fe021dae97b9f)
1f5eefe2fSzhongyang219 // OptionsDlg.cpp : ʵ���ļ�
2f5eefe2fSzhongyang219 //
3f5eefe2fSzhongyang219 
4f5eefe2fSzhongyang219 #include "stdafx.h"
5f5eefe2fSzhongyang219 #include "MusicPlayer2.h"
6f5eefe2fSzhongyang219 #include "OptionsDlg.h"
7f5eefe2fSzhongyang219 #include "afxdialogex.h"
8f5eefe2fSzhongyang219 
9f5eefe2fSzhongyang219 
10f5eefe2fSzhongyang219 // COptionsDlg �Ի���
11f5eefe2fSzhongyang219 
12f5eefe2fSzhongyang219 IMPLEMENT_DYNAMIC(COptionsDlg, CDialog)
13f5eefe2fSzhongyang219 
14f5eefe2fSzhongyang219 COptionsDlg::COptionsDlg(CWnd* pParent /*=NULL*/)
15f5eefe2fSzhongyang219 	: CDialog(IDD_OPTIONS_DIALOG, pParent)
16f5eefe2fSzhongyang219 {
17f5eefe2fSzhongyang219 
18f5eefe2fSzhongyang219 }
19f5eefe2fSzhongyang219 
20f5eefe2fSzhongyang219 COptionsDlg::~COptionsDlg()
21f5eefe2fSzhongyang219 {
22f5eefe2fSzhongyang219 }
23f5eefe2fSzhongyang219 
24f5eefe2fSzhongyang219 void COptionsDlg::DoDataExchange(CDataExchange* pDX)
25f5eefe2fSzhongyang219 {
26f5eefe2fSzhongyang219 	CDialog::DoDataExchange(pDX);
27f5eefe2fSzhongyang219 	DDX_Control(pDX, IDC_OPTIONS_TAB, m_tab);
28f5eefe2fSzhongyang219 }
29f5eefe2fSzhongyang219 
30f5eefe2fSzhongyang219 
31f5eefe2fSzhongyang219 BEGIN_MESSAGE_MAP(COptionsDlg, CDialog)
325d218daaSZhong Yang 	ON_BN_CLICKED(IDC_APPLY_BUTTON, &COptionsDlg::OnBnClickedApplyButton)
33b26f7c9eSZhong Yang 	ON_WM_DESTROY()
34*97b7b8c3Szhongyang     ON_WM_GETMINMAXINFO()
35*97b7b8c3Szhongyang     ON_WM_SIZE()
36f5eefe2fSzhongyang219 END_MESSAGE_MAP()
37f5eefe2fSzhongyang219 
38f5eefe2fSzhongyang219 
39f5eefe2fSzhongyang219 // COptionsDlg ��Ϣ�������
40f5eefe2fSzhongyang219 
41f5eefe2fSzhongyang219 
42f5eefe2fSzhongyang219 BOOL COptionsDlg::OnInitDialog()
43f5eefe2fSzhongyang219 {
44f5eefe2fSzhongyang219 	CDialog::OnInitDialog();
45f5eefe2fSzhongyang219 
46f5eefe2fSzhongyang219 	// TODO:  �ڴ���Ӷ���ij�ʼ��
47f5eefe2fSzhongyang219 
48*97b7b8c3Szhongyang     SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME), FALSE);		// ����Сͼ��
49*97b7b8c3Szhongyang 
50*97b7b8c3Szhongyang     //��ȡ��ʼʱ���ڵĴ�С
51*97b7b8c3Szhongyang     CRect rect;
52*97b7b8c3Szhongyang     GetWindowRect(rect);
53*97b7b8c3Szhongyang     m_min_size.cx = rect.Width();
54*97b7b8c3Szhongyang     m_min_size.cy = rect.Height();
55*97b7b8c3Szhongyang 
56bb1ccb84SZhong Yang 	//�����ӶԻ���
57bb1ccb84SZhong Yang 	m_tab1_dlg.Create(IDD_LYRIC_SETTING_DIALOG);
58bb1ccb84SZhong Yang 	m_tab2_dlg.Create(IDD_APPEREANCE_SETTING_DLG);
59bb1ccb84SZhong Yang 	m_tab3_dlg.Create(IDD_DATA_SETTINGS_DIALOG);
60bb1ccb84SZhong Yang 	m_tab4_dlg.Create(IDD_PLAY_SETTING_DIALOG);
619afaa4f1SZhong Yang 	m_tab5_dlg.Create(IDD_HOT_KEY_SETTINGS_DIALOG);
62bb1ccb84SZhong Yang 
633cbff0c7SZhong Yang 	//�����ӶԻ���
64*97b7b8c3Szhongyang 	m_tab_vect.push_back(&m_tab1_dlg);
65*97b7b8c3Szhongyang 	m_tab_vect.push_back(&m_tab2_dlg);
66*97b7b8c3Szhongyang 	m_tab_vect.push_back(&m_tab3_dlg);
67*97b7b8c3Szhongyang 	m_tab_vect.push_back(&m_tab4_dlg);
68*97b7b8c3Szhongyang 	m_tab_vect.push_back(&m_tab5_dlg);
693cbff0c7SZhong Yang 
703cbff0c7SZhong Yang 	//��ȡ�ӶԻ���ij�ʼ�߶�
71*97b7b8c3Szhongyang 	for (const auto* pDlg : m_tab_vect)
723cbff0c7SZhong Yang 	{
733cbff0c7SZhong Yang 		CRect rect;
743cbff0c7SZhong Yang 		pDlg->GetWindowRect(rect);
75*97b7b8c3Szhongyang 		m_tab_height.push_back(rect.Height());
763cbff0c7SZhong Yang 	}
773cbff0c7SZhong Yang 
78bb1ccb84SZhong Yang 	//��ӶԻ���
79d9d0c25bSZhong Yang 	m_tab.AddWindow(&m_tab1_dlg, CCommon::LoadText(IDS_LYRIC_SETTINGS));
80d9d0c25bSZhong Yang 	m_tab.AddWindow(&m_tab2_dlg, CCommon::LoadText(IDS_APPEARANCE_SETTINGS));
81d9d0c25bSZhong Yang 	m_tab.AddWindow(&m_tab3_dlg, CCommon::LoadText(IDS_GENERAL_SETTINGS));
82d9d0c25bSZhong Yang 	m_tab.AddWindow(&m_tab4_dlg, CCommon::LoadText(IDS_PLAY_SETTINGS));
83d9d0c25bSZhong Yang 	m_tab.AddWindow(&m_tab5_dlg, CCommon::LoadText(IDS_GLOBLE_HOTKEY));
84bb1ccb84SZhong Yang 
853cbff0c7SZhong Yang 	//Ϊÿ���Ӵ������ù�����Ϣ
86*97b7b8c3Szhongyang 	for (size_t i = 0; i < m_tab_vect.size(); i++)
873cbff0c7SZhong Yang 	{
88*97b7b8c3Szhongyang 		m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]);
893cbff0c7SZhong Yang 	}
903cbff0c7SZhong Yang 
91bb1ccb84SZhong Yang 	m_tab.SetCurTab(m_tab_selected);
92bb1ccb84SZhong Yang 
93f5eefe2fSzhongyang219 	return TRUE;  // return TRUE unless you set the focus to a control
94f5eefe2fSzhongyang219 				  // �쳣: OCX ����ҳӦ���� FALSE
95f5eefe2fSzhongyang219 }
96f5eefe2fSzhongyang219 
97575ff337SZhong Yang void COptionsDlg::OnOK()
98575ff337SZhong Yang {
99575ff337SZhong Yang 	// TODO: �ڴ����ר�ô����/����û���
10054359200SZhong Yang 	m_tab1_dlg.OnOK();
101575ff337SZhong Yang 	m_tab2_dlg.OnOK();
102d9d0c25bSZhong Yang 	m_tab3_dlg.OnOK();
103575ff337SZhong Yang 
104575ff337SZhong Yang 	CDialog::OnOK();
105575ff337SZhong Yang }
1065d218daaSZhong Yang 
1075d218daaSZhong Yang 
1085d218daaSZhong Yang void COptionsDlg::OnBnClickedApplyButton()
1095d218daaSZhong Yang {
1105d218daaSZhong Yang 	// TODO: �ڴ���ӿؼ�֪ͨ����������
1115d218daaSZhong Yang 	::SendMessage(theApp.m_pMainWnd->GetSafeHwnd(), WM_SETTINGS_APPLIED, (WPARAM)this, 0);
1125d218daaSZhong Yang }
113b26f7c9eSZhong Yang 
114b26f7c9eSZhong Yang 
115b26f7c9eSZhong Yang void COptionsDlg::OnDestroy()
116b26f7c9eSZhong Yang {
117b26f7c9eSZhong Yang 	CDialog::OnDestroy();
118b26f7c9eSZhong Yang 
119b26f7c9eSZhong Yang 	// TODO: �ڴ˴������Ϣ����������
120b26f7c9eSZhong Yang 	m_tab_selected = m_tab.GetCurSel();
121b26f7c9eSZhong Yang }
122*97b7b8c3Szhongyang 
123*97b7b8c3Szhongyang 
124*97b7b8c3Szhongyang void COptionsDlg::OnGetMinMaxInfo(MINMAXINFO* lpMMI)
125*97b7b8c3Szhongyang {
126*97b7b8c3Szhongyang     // TODO: �ڴ������Ϣ�����������/�����Ĭ��ֵ
127*97b7b8c3Szhongyang     //���ƴ�����С��С
128*97b7b8c3Szhongyang     lpMMI->ptMinTrackSize.x = m_min_size.cx;		//������С���
129*97b7b8c3Szhongyang     lpMMI->ptMinTrackSize.y = m_min_size.cy;		//������С�߶�
130*97b7b8c3Szhongyang 
131*97b7b8c3Szhongyang     CDialog::OnGetMinMaxInfo(lpMMI);
132*97b7b8c3Szhongyang }
133*97b7b8c3Szhongyang 
134*97b7b8c3Szhongyang 
135*97b7b8c3Szhongyang void COptionsDlg::OnSize(UINT nType, int cx, int cy)
136*97b7b8c3Szhongyang {
137*97b7b8c3Szhongyang     CDialog::OnSize(nType, cx, cy);
138*97b7b8c3Szhongyang     if (nType != SIZE_MINIMIZED)
139*97b7b8c3Szhongyang     {
140*97b7b8c3Szhongyang         //Ϊÿ���Ӵ������ù�����Ϣ
141*97b7b8c3Szhongyang         for (size_t i = 0; i < m_tab_vect.size(); i++)
142*97b7b8c3Szhongyang         {
143*97b7b8c3Szhongyang             m_tab_vect[i]->ResetScroll();
144*97b7b8c3Szhongyang             m_tab_vect[i]->SetScrollbarInfo(m_tab.m_tab_rect.Height(), m_tab_height[i]);
145*97b7b8c3Szhongyang         }
146*97b7b8c3Szhongyang 
147*97b7b8c3Szhongyang     }
148*97b7b8c3Szhongyang 
149*97b7b8c3Szhongyang     // TODO: �ڴ˴������Ϣ����������
150*97b7b8c3Szhongyang }
151