xref: /MusicPlayer2/MusicPlayer2/CFloatPlaylistDlg.h (revision 125e011e3514d01d06c86a4bab9a91133964b04d)
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