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