1 #pragma once 2 #include "BaseDialog.h" 3 #include "CTabCtrlEx.h" 4 #include "SetPathDlg.h" 5 #include "CSelectPlaylist.h" 6 #include "MediaClassifyDlg.h" 7 #include "FolderExploreDlg.h" 8 #include "AllMediaDlg.h" 9 10 // CMediaLibDlg 对话框 11 12 class CMediaLibDlg : public CBaseDialog 13 { 14 DECLARE_DYNAMIC(CMediaLibDlg) 15 16 public: 17 CMediaLibDlg(int cur_tab = 0, CWnd* pParent = nullptr); // 标准构造函数 18 virtual ~CMediaLibDlg(); 19 20 // 对话框数据 21 #ifdef AFX_DESIGN_TIME 22 enum { IDD = IDD_MEDIA_LIB_DIALOG }; 23 #endif 24 25 public: 26 CSetPathDlg* m_path_dlg{}; 27 CSelectPlaylistDlg* m_playlist_dlg{}; 28 CMediaClassifyDlg* m_artist_dlg{}; 29 CMediaClassifyDlg* m_album_dlg{}; 30 CMediaClassifyDlg* m_genre_dlg{}; 31 CMediaClassifyDlg* m_year_dlg{}; 32 CMediaClassifyDlg* m_type_dlg{}; 33 CMediaClassifyDlg* m_bitrate_dlg{}; 34 CMediaClassifyDlg* m_rating_dlg{}; 35 CAllMediaDlg* m_all_media_dlg{}; 36 CAllMediaDlg* m_recent_media_dlg{}; 37 CFolderExploreDlg* m_folder_explore_dlg{}; 38 39 void SetCurTab(int tab); 40 41 //设置要强制显示出来的对话框(即使媒体库设置中为显示此标签) 42 //tabs: 要显示出来的标签,它不是标签的序号,而是多个bit的组合,用于表示多个标签,每个bit的含义为MediaLibDisplayItem枚举的常量 SetTabForceShow(int tabs)43 void SetTabForceShow(int tabs) { m_tab_show_force = tabs; } 44 45 //跳转到对应项目,例如当前显示的是艺术家标签,则跳转到对应艺术家 46 bool NavigateToItem(const wstring& item); 47 48 protected: 49 virtual CString GetDialogName() const override; 50 virtual bool InitializeControls() override; 51 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 52 53 DECLARE_MESSAGE_MAP() 54 55 private: 56 CTabCtrlEx m_tab_ctrl; 57 int m_init_tab{}; 58 static int m_last_tab; 59 int m_tab_show_force{}; //要强制显示出来的标签 60 61 public: 62 virtual BOOL OnInitDialog(); 63 afx_msg void OnBnClickedPlaySelected(); 64 protected: 65 afx_msg LRESULT OnPlaySelectedBtnEnable(WPARAM wParam, LPARAM lParam); 66 public: 67 afx_msg void OnBnClickedMediaLibSettingsBtn(); 68 afx_msg void OnBnClickedStatisticsInfoButton(); 69 afx_msg void OnDestroy(); 70 virtual void OnOK(); 71 virtual void OnCancel(); 72 }; 73