xref: /MusicPlayer2/MusicPlayer2/MiniModeDlg.h (revision 7dea1e7f2bd61e213655dd4b32eb94b791dc31a0)
1 #pragma once
2 #include"Player.h"
3 #include "PropertyDlg.h"
4 #include "PlayListCtrl.h"
5 #include "ColorConvert.h"
6 #include "DrawCommon.h"
7 #include "CPlayerUIBase.h"
8 
9 // CMiniModeDlg 对话框
10 
11 class CMiniModeDlg : public CDialogEx
12 {
13     DECLARE_DYNAMIC(CMiniModeDlg)
14 
15 public:
16     CMiniModeDlg(int& item_selected, vector<int>& items_selected, CWnd* pParent = NULL);   // 标准构造函数
17     virtual ~CMiniModeDlg();
18 
19 // 对话框数据
20 #ifdef AFX_DESIGN_TIME
21     enum { IDD = IDD_MINI_DIALOG };
22 #endif
23 
24     void Init();
25     void UpdatePlayPauseButton();
26     void ShowPlaylist();
27     void SetPlayListColor();
28     //void SetDefaultBackGround(CImage* pImage);
29     //void SetDisplayFormat(DisplayFormat* pDisplayFormat);
30 
31     void MoveWindowPos();
32 
33     void SetVolume(int step);
34     void SetTransparency();
35 
36     void SetDragEnable();
GetPlaylistCtrl()37     CPlayListCtrl& GetPlaylistCtrl() { return m_playlist_ctrl; }
38 
39     void GetPlaylistItemSelected();
40 
41     void DrawInfo();
42 
43     CPlayerUIBase* GetCurUi();
IsUseUiPlaylist()44     bool IsUseUiPlaylist() { return m_use_ui_playlist; }
IsShowPlaylist()45     bool IsShowPlaylist() { return m_show_playlist; }
46 
47 protected:
48 
49     int m_position_x;
50     int m_position_y;
51 
52     int m_ui_width{};
53     int m_ui_height{};
54 
55     bool m_show_playlist{ false };		//是否显示播放列表
56     LONG m_playlist_y_offset{};         //播放列表收起时窗口需要进行的y坐标偏移量
57 
58     int& m_item_selected;		//播放列表中鼠标选中的项目,引用MusicPlayerDlg类中的同名变量,当迷你窗口中播放列表选中的项目变化时,同步到主窗口中选中的项目
59     vector<int>& m_items_selected;
60 
61     std::vector<std::shared_ptr<CPlayerUIBase>> m_ui_list;      //保存每个界面类的指针
62     int m_ui_index{};
63 
64     CDC* m_pDC;
65 
66     CPlayListCtrl m_playlist_ctrl{ CPlayer::GetInstance().GetPlayList() };
67 
68     bool m_first_start{ true };
69     bool m_always_on_top{ true };
70     bool m_draw_reset{ false };
71     bool m_use_ui_playlist{ true };
72 
73 protected:
74     virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持
75 
76     void SaveConfig() const;
77     void LoadConfig();
78 
79     void SetTitle();
80     void SetAlwaysOnTop();
81     void AdjustWindowSize();
82     bool CalculateWindowSize(int& width, int& height, int& height_with_playlist);
83 
84     DECLARE_MESSAGE_MAP()
85 
86 
87 protected:
88 
89     virtual BOOL OnInitDialog();
90     afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
91     afx_msg void OnTimer(UINT_PTR nIDEvent);
92 
93     virtual BOOL PreTranslateMessage(MSG* pMsg);
94     afx_msg void OnDestroy();
95     //afx_msg void OnMove(int x, int y);
96     afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
97     afx_msg void OnMiniModeExit();
98     afx_msg void OnInitMenu(CMenu* pMenu);
99     afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point);
100     afx_msg void OnNMDblclkList2(NMHDR *pNMHDR, LRESULT *pResult);
101     afx_msg void OnNMRClickList2(NMHDR *pNMHDR, LRESULT *pResult);
102     afx_msg void OnPaint();
103 public:
104     afx_msg void OnMouseMove(UINT nFlags, CPoint point);
105     afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
106     afx_msg void OnShowPlayList();
107     afx_msg void OnMouseLeave();
108     afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message);
109     afx_msg void OnMiniMideMinimize();
110 protected:
111     afx_msg LRESULT OnListItemDragged(WPARAM wParam, LPARAM lParam);
112     virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
113 public:
114     afx_msg void OnMiniModeAlwaysOnTop();
115 protected:
116     //afx_msg LRESULT OnTimerIntervalChanged(WPARAM wParam, LPARAM lParam);
117 public:
118     afx_msg void OnExitSizeMove();
119 protected:
120     afx_msg LRESULT OnTabletQuerysystemgesturestatus(WPARAM wParam, LPARAM lParam);
121 public:
122     afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
123     afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
124 };
125