xref: /MusicPlayer2/MusicPlayer2/FindContainerDlg.cpp (revision c1fa382b6dc582665d7ede9b222314265bb88c8f)
1 // FindContainerDlg.cpp: 实现文件
2 //
3 
4 #include "stdafx.h"
5 #include "MusicPlayer2.h"
6 #include "afxdialogex.h"
7 #include "FindContainerDlg.h"
8 
9 
10 // CFindContainerDlg 对话框
11 
IMPLEMENT_DYNAMIC(CFindContainerDlg,CBaseDialog)12 IMPLEMENT_DYNAMIC(CFindContainerDlg, CBaseDialog)
13 
14 CFindContainerDlg::CFindContainerDlg(CWnd* pParent /*=nullptr*/)
15 	: CBaseDialog(IDD_FIND_CONTAINER_DIALOG, pParent)
16 {
17 
18 }
19 
~CFindContainerDlg()20 CFindContainerDlg::~CFindContainerDlg()
21 {
22 }
23 
LoadChildrenConfig()24 void CFindContainerDlg::LoadChildrenConfig()
25 {
26 	m_find_song_dlg.LoadConfig();
27 }
28 
SaveChildrenConfig()29 void CFindContainerDlg::SaveChildrenConfig()
30 {
31 	m_find_song_dlg.SaveConfig();
32 }
33 
DoDataExchange(CDataExchange * pDX)34 void CFindContainerDlg::DoDataExchange(CDataExchange* pDX)
35 {
36 	CBaseDialog::DoDataExchange(pDX);
37 	DDX_Control(pDX, IDC_TAB1, m_tab_ctrl);
38 }
39 
GetDialogName() const40 CString CFindContainerDlg::GetDialogName() const
41 {
42 	return _T("FindDlg");
43 }
44 
InitializeControls()45 bool CFindContainerDlg::InitializeControls()
46 {
47 	SetWindowTextW(theApp.m_str_table.LoadText(L"TITLE_FIND_CONTAINER").c_str());
48 	SetDlgControlText(IDOK, L"TXT_FIND_PLAY_SELECTED");
49 
50 	//RepositionTextBasedControls({
51 	//	{ CtrlTextInfo::R1, IDOK, CtrlTextInfo::W32 },
52 	//	{ CtrlTextInfo::R2, IDCANCEL, CtrlTextInfo::W32 }
53 	//});
54 
55 	return false;
56 }
57 
58 
BEGIN_MESSAGE_MAP(CFindContainerDlg,CBaseDialog)59 BEGIN_MESSAGE_MAP(CFindContainerDlg, CBaseDialog)
60 	ON_MESSAGE(WM_PLAY_SELECTED_BTN_ENABLE, &CFindContainerDlg::OnPlaySelectedBtnEnable)
61 	ON_WM_DESTROY()
62 END_MESSAGE_MAP()
63 
64 
65 // CFindContainerDlg 消息处理程序
66 
67 
68 BOOL CFindContainerDlg::OnInitDialog()
69 {
70 	CBaseDialog::OnInitDialog();
71 
72 	SetIcon(IconMgr::IconType::IT_Find, FALSE);
73 	SetIcon(IconMgr::IconType::IT_Find, TRUE);
74 	SetButtonIcon(IDOK, IconMgr::IconType::IT_Play);
75 
76 	//创建子对话框
77 	m_find_song_dlg.Create(IDD_FIND_DIALOG);
78 	//由于对话框关闭后CFindContainerDlg不会被析构(目的是为了在对话框关闭后保留“查找文件”中上次的查找结果)
79 	//但是CFindListDlg不析构的话会有问题,因此这里使用指针,在OnDestroy中析构
80 	if (m_find_list_dlg == nullptr)
81 		m_find_list_dlg = new CFindListDlg();
82 	m_find_list_dlg->Create(IDD_FIND_LIST_DIALOG);
83 
84 	//添加对话框
85 	m_tab_ctrl.AddWindow(&m_find_song_dlg, theApp.m_str_table.LoadText(L"TITLE_FIND").c_str(), IconMgr::IconType::IT_Music);
86 	m_tab_ctrl.AddWindow(m_find_list_dlg, theApp.m_str_table.LoadText(L"TITLE_FIND_LIST").c_str(), IconMgr::IconType::IT_Playlist);
87 
88 	m_tab_ctrl.SetItemSize(CSize(theApp.DPI(60), theApp.DPI(24)));
89 	m_tab_ctrl.AdjustTabWindowSize();
90 
91 	m_tab_ctrl.SetCurTab(m_tab_selected);
92 
93 	return TRUE;  // return TRUE unless you set the focus to a control
94 	// 异常: OCX 属性页应返回 FALSE
95 }
96 
97 
OnOK()98 void CFindContainerDlg::OnOK()
99 {
100 	// TODO: 在此添加专用代码和/或调用基类
101 	CTabDlg* current_tab = dynamic_cast<CTabDlg*>(m_tab_ctrl.GetCurrentTab());
102 	if (current_tab != nullptr)
103 		current_tab->OnOK();
104 
105 	CBaseDialog::OnOK();
106 }
107 
108 
OnPlaySelectedBtnEnable(WPARAM wParam,LPARAM lParam)109 afx_msg LRESULT CFindContainerDlg::OnPlaySelectedBtnEnable(WPARAM wParam, LPARAM lParam)
110 {
111 	bool enable = (wParam != 0);
112 	CWnd* pBtn = GetDlgItem(IDOK);
113 	if (pBtn != nullptr)
114 		pBtn->EnableWindow(enable);
115 
116 	return 0;
117 }
118 
119 
OnDestroy()120 void CFindContainerDlg::OnDestroy()
121 {
122 	CBaseDialog::OnDestroy();
123 
124 	m_tab_selected = m_tab_ctrl.GetCurSel();
125 	m_tab_ctrl.Clear();
126 	delete m_find_list_dlg;
127 	m_find_list_dlg = nullptr;
128 }
129