1 #pragma once 2 #include "BaseDialog.h" 3 #include "PlayListCtrl.h" 4 #include "StaticEx.h" 5 #include "CPlayerUIBase.h" 6 #include "PlayerToolBar.h" 7 #include "SearchEditCtrl.h" 8 #include "MenuEditCtrl.h" 9 10 #define WM_FLOAT_PLAYLIST_CLOSED (WM_USER+118) 11 12 // CFloatPlaylistDlg 对话框 13 14 class CFloatPlaylistDlg : public CBaseDialog 15 { 16 DECLARE_DYNAMIC(CFloatPlaylistDlg) 17 18 public: 19 CFloatPlaylistDlg(int& item_selected, vector<int>& items_selected, CWnd* pParent = nullptr); // 标准构造函数 20 virtual ~CFloatPlaylistDlg(); 21 22 // 对话框数据 23 #ifdef AFX_DESIGN_TIME 24 enum { IDD = IDD_MUSICPLAYER2_DIALOG }; 25 #endif 26 27 void RefreshData(); //刷新数据 28 void ReSizeControl(int cx, int cy); //调整控件的大小和位置 29 void RefreshState(bool highlight_visible = true); //刷新播放列表的状态 30 CPlayListCtrl& GetListCtrl(); 31 CStaticEx& GetPathStatic(); 32 CMenuEditCtrl& GetPathEdit(); 33 CSearchEditCtrl& GetSearchBox(); 34 void GetPlaylistItemSelected(); 35 void SetDragEnable(); 36 void EnableControl(bool enable); 37 void UpdateStyles(); 38 void SetInitPoint(CPoint point); 39 40 private: 41 CPlayListCtrl m_playlist_ctrl; 42 CStaticEx m_path_static; 43 CMenuEditCtrl m_path_edit; 44 CButton m_media_lib_button; 45 CSearchEditCtrl m_search_edit; 46 CPlayerToolBar m_playlist_toolbar; 47 48 SLayoutData m_layout; //窗口布局的固定数据 49 int m_medialib_btn_width{ theApp.DPI(64) }; // 这里的值是最小宽度,窗口init时会根据文字变大 50 51 bool m_searched{ false }; //播放列表是否处于搜索状态 52 int& m_item_selected; //播放列表中鼠标选中的项目 53 vector<int>& m_items_selected; 54 55 CPoint m_init_point{ INT_MAX, INT_MAX }; 56 57 private: 58 bool Initilized() const; 59 60 protected: 61 virtual CString GetDialogName() const override; 62 virtual bool InitializeControls() override; 63 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 64 65 DECLARE_MESSAGE_MAP() 66 public: 67 virtual BOOL OnInitDialog(); 68 afx_msg void OnSize(UINT nType, int cx, int cy); 69 afx_msg void OnNMRClickPlaylistList(NMHDR* pNMHDR, LRESULT* pResult); 70 afx_msg void OnNMDblclkPlaylistList(NMHDR* pNMHDR, LRESULT* pResult); 71 afx_msg void OnEnChangeSearchEdit(); 72 virtual void OnCancel(); 73 afx_msg void OnClose(); 74 virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam); 75 afx_msg void OnNMClickPlaylistList(NMHDR* pNMHDR, LRESULT* pResult); 76 virtual BOOL PreTranslateMessage(MSG* pMsg); 77 protected: 78 afx_msg LRESULT OnInitmenu(WPARAM wParam, LPARAM lParam); 79 afx_msg LRESULT OnListItemDragged(WPARAM wParam, LPARAM lParam); 80 afx_msg LRESULT OnSearchEditBtnClicked(WPARAM wParam, LPARAM lParam); 81 public: 82 afx_msg void OnLocateToCurrent(); 83 protected: 84 afx_msg LRESULT OnMainWindowActivated(WPARAM wParam, LPARAM lParam); 85 public: 86 afx_msg void OnDropFiles(HDROP hDropInfo); 87 afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct); 88 }; 89