19cffa0dfSzhongyang219 #pragma once 29cffa0dfSzhongyang219 #include "afxdialogex.h" 39cffa0dfSzhongyang219 #include "TabDlg.h" 49cffa0dfSzhongyang219 #include "ListCtrlEx.h" 59cffa0dfSzhongyang219 #include "SearchEditCtrl.h" 69cffa0dfSzhongyang219 #include "ListCache.h" 79cffa0dfSzhongyang219 89cffa0dfSzhongyang219 // CFindListDlg 对话框 99cffa0dfSzhongyang219 109cffa0dfSzhongyang219 class CFindListDlg : public CTabDlg 119cffa0dfSzhongyang219 { 129cffa0dfSzhongyang219 DECLARE_DYNAMIC(CFindListDlg) 139cffa0dfSzhongyang219 149cffa0dfSzhongyang219 public: 159cffa0dfSzhongyang219 CFindListDlg(CWnd* pParent = nullptr); // 标准构造函数 169cffa0dfSzhongyang219 virtual ~CFindListDlg(); 179cffa0dfSzhongyang219 189cffa0dfSzhongyang219 // 对话框数据 199cffa0dfSzhongyang219 #ifdef AFX_DESIGN_TIME 209cffa0dfSzhongyang219 enum { IDD = IDD_FIND_LIST_DIALOG }; 219cffa0dfSzhongyang219 #endif 229cffa0dfSzhongyang219 239cffa0dfSzhongyang219 private: 249cffa0dfSzhongyang219 enum COLUMN 259cffa0dfSzhongyang219 { 269cffa0dfSzhongyang219 COL_NAME, 279cffa0dfSzhongyang219 COL_TRACK_NUM, 289cffa0dfSzhongyang219 COL_MAX 299cffa0dfSzhongyang219 }; 309cffa0dfSzhongyang219 319cffa0dfSzhongyang219 CSearchEditCtrl m_search_edit; 329cffa0dfSzhongyang219 std::vector<ListItem> m_all_list_items; 339cffa0dfSzhongyang219 CListCtrlEx m_list_ctrl; 349cffa0dfSzhongyang219 CListCtrlEx::ListData m_list_data; // 列表数据 359cffa0dfSzhongyang219 CListCtrlEx::ListData m_list_data_searched; // 搜索后的列表数据 369cffa0dfSzhongyang219 vector<int> m_search_result; //保存搜索后的索引 379cffa0dfSzhongyang219 389cffa0dfSzhongyang219 bool m_searched{ false }; // 是否处于搜索状态 399cffa0dfSzhongyang219 bool m_initialized{ false }; 409cffa0dfSzhongyang219 419cffa0dfSzhongyang219 private: 429cffa0dfSzhongyang219 void InitListData(); 439cffa0dfSzhongyang219 virtual void OnTabEntered() override; 449cffa0dfSzhongyang219 459cffa0dfSzhongyang219 void AddListCacheData(const CListCache& list_cache); //向m_all_list_items中添加一个CListCache中的所有项目 469cffa0dfSzhongyang219 void AddMediaLibItem(CMediaClassifier::ClassificationType type); //向m_all_list_items中添加媒体库中指定类型的所有项目 47*c1fa382bSzhongyang219 void AddAllFolders(); //向m_all_list_items中添加媒体库中所有文件夹 489cffa0dfSzhongyang219 499cffa0dfSzhongyang219 void ShowList(); 509cffa0dfSzhongyang219 void QuickSearch(const wstring& key_word); //根据关键字执行快速查找,将结果保存在m_list_data_searched中 519cffa0dfSzhongyang219 529cffa0dfSzhongyang219 //向父窗口发送消息以更新“播放选中”按钮的状态 539cffa0dfSzhongyang219 void SetPlaySelectedEnable(bool enable); 549cffa0dfSzhongyang219 559cffa0dfSzhongyang219 protected: 569cffa0dfSzhongyang219 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 579cffa0dfSzhongyang219 589cffa0dfSzhongyang219 DECLARE_MESSAGE_MAP() 599cffa0dfSzhongyang219 public: 609cffa0dfSzhongyang219 virtual BOOL OnInitDialog(); 619cffa0dfSzhongyang219 virtual void OnOK(); 629cffa0dfSzhongyang219 protected: 639cffa0dfSzhongyang219 afx_msg LRESULT OnSearchEditBtnClicked(WPARAM wParam, LPARAM lParam); 649cffa0dfSzhongyang219 public: 659cffa0dfSzhongyang219 afx_msg void OnEnChangeSearchEdit(); 669cffa0dfSzhongyang219 afx_msg void OnNMClickSongList(NMHDR* pNMHDR, LRESULT* pResult); 6705b6c2f7Szhongyang219 afx_msg void OnSize(UINT nType, int cx, int cy); 689cffa0dfSzhongyang219 }; 69