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