1 2 // MusicPlayerDlg.h : 头文件 3 // 4 5 #pragma once 6 #include"PlayListCtrl.h" 7 #include "FindContainerDlg.h" 8 #include"OptionsDlg.h" 9 #include"PropertyDlg.h" 10 #include"ColorConvert.h" 11 #include"MiniModeDlg.h" 12 #include"LyricEditDlg.h" 13 #include "LyricDownloadDlg.h" 14 #include "LyricBatchDownloadDlg.h" 15 #include "SoundEffectDlg.h" 16 #include "CortanaLyric.h" 17 #include "FilePathHelper.h" 18 #include "CoverDownloadCommon.h" 19 #include "CoverDownloadDlg.h" 20 #include "FormatConvertDlg.h" 21 #include "CNotifyIcon.h" 22 #include "StaticEx.h" 23 #include "CMainDialogBase.h" 24 #include "CFloatPlaylistDlg.h" 25 #include "CMediaLibDlg.h" 26 #include "DesktopLyric.h" 27 #include "SearchEditCtrl.h" 28 #include "UIWindow.h" 29 #include "CDevicesManager.h" 30 #include "MenuEditCtrl.h" 31 #include "HorizontalSplitter.h" 32 #include "powrprof.h" 33 #include "CHotkeyManager.h" 34 #include "ListCache.h" 35 36 #define WM_ALBUM_COVER_DOWNLOAD_COMPLETE (WM_USER+114) //自动下载专辑封面和歌词完成时发出的消息 37 38 // CMusicPlayerDlg 对话框 39 class CMusicPlayerDlg : public CMainDialogBase 40 { 41 42 // 构造 43 public: 44 CMusicPlayerDlg(wstring cmdLine = wstring(), CWnd* pParent = NULL); // 标准构造函数 45 ~CMusicPlayerDlg(); 46 47 static CMusicPlayerDlg* GetInstance(); 48 GetAccel()49 HACCEL GetAccel() const { return m_hAccel; } GetCortanaLyric()50 CCortanaLyric& GetCortanaLyric() { return m_cortana_lyric; } 51 52 friend class CMusicPlayerCmdHelper; 53 friend class CUIWindow; 54 friend class CPlayerUIBase; 55 GetUIWindow()56 CUIWindow& GetUIWindow() { return m_ui_static_ctrl; } 57 bool IsMiniMode() const; 58 CMiniModeDlg* GetMinimodeDlg(); 59 void UiForceRefresh(); //通知UI线程强制刷新一次 60 61 // 对话框数据 62 #ifdef AFX_DESIGN_TIME 63 enum { IDD = IDD_MUSICPLAYER2_DIALOG }; 64 #endif 65 66 protected: 67 virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 68 69 public: 70 CMenu* m_pCurMenu{}; //当前弹出的菜单 71 72 // 为主窗口停靠播放列表部分控件显示缓存当前ListItem,与控件显示状态应总是保持同步 73 // 主线程可以从这里取得当前ListItem,***限制此对象仅能在主线程使用*** 74 CListCache m_current_cache; 75 // 为“最近播放”菜单缓存ListItem,总是与MenuMgr::RecentFolderPlaylistMenu一致 76 // 主线程可以从这里获取此菜单当前内容数据,***限制此对象仅能在主线程使用*** 77 CListCache m_recent_cache; 78 79 protected: 80 HICON m_hIcon; 81 //控件变量 82 83 CUIWindow m_ui_static_ctrl{ m_pUI }; 84 CHorizontalSplitter m_splitter_ctrl; 85 CStaticEx m_path_static; 86 CMenuEditCtrl m_path_edit; 87 CButton m_media_lib_button; 88 CSearchEditCtrl m_search_edit; 89 CPlayerToolBar m_playlist_toolbar; 90 //播放列表控件(初始化时通过构造函数传递歌曲信息的引用,用于支持鼠标指向列表中的项目时显示歌曲信息) 91 CPlayListCtrl m_playlist_list{ CPlayer::GetInstance().GetPlayList() }; 92 93 CToolTipCtrl m_tool_tip; 94 95 #ifndef COMPILE_IN_WIN_XP 96 THUMBBUTTON m_thumbButton[3]{}; 97 #endif 98 99 CHotkeyManager m_hot_key; 100 CFindContainerDlg m_findDlg; //查找对话框 101 HACCEL m_hAccel{}; 102 103 wstring m_cmdLine; //命令行参数 104 std::mutex m_cmd_open_files_mutx; // 保护m_cmd_open_files的线程同步对象 105 vector<wstring> m_cmd_open_files; // 来自命令行/copy_data的待打开文件队列 106 107 CDC* m_pUiDC; //当前窗口的DC 108 std::vector<std::shared_ptr<CPlayerUIBase>> m_ui_list; //保存每个界面类的指针 109 IPlayerUI* m_pUI = nullptr; //指向当前显示的界面类 110 111 bool m_first_start{ true }; //初始时为true,在定时器第一次启动后置为flase 112 113 int m_window_width; //窗口的宽度 114 int m_window_height; //窗口的高度 115 CPoint m_desktop_lyric_pos{ -1, -1 }; //桌面歌词窗口的位置 116 CSize m_desktop_lyric_size{ 0, 0 }; 117 int m_part_static_width{ theApp.DPI(32) }; // 这里的值是最小宽度,窗口init时会根据文字变大 118 int m_medialib_btn_width{ theApp.DPI(64) }; // 这里的值是最小宽度,窗口init时会根据文字变大 119 120 SLayoutData m_layout; //窗口布局的固定数据 121 122 bool m_searched; //播放列表是否处于搜索状态 123 124 unsigned int m_timer_count{}; 125 unsigned int m_one_sec_timer_counter{}; 126 127 int m_item_selected{ -1 }; //播放列表中鼠标选中的项目 128 vector<int> m_items_selected; 129 int m_tab_selected{}; //选项设置中选择的标签 130 131 CMiniModeDlg m_miniModeDlg{ m_item_selected, m_items_selected }; //迷你模式对话框 132 133 CCortanaLyric m_cortana_lyric; //用于显示Cortana歌词 134 CDesktopLyric m_desktop_lyric; //桌面歌词 135 136 CLyricEditDlg* m_pLyricEdit; //歌词编辑对话框(非模态对话框) 137 CLyricBatchDownloadDlg* m_pLyricBatchDownDlg; //歌词批量下载对话框(非模态对话框) 138 CMediaLibDlg* m_pMediaLibDlg; //媒体库对话框(非模态对话框) 139 CSoundEffectDlg* m_pSoundEffecDlg; //音效设定对话框(非模态对话框) 140 CFormatConvertDlg* m_pFormatConvertDlg; //格式转换对话框(非模态对话框) 141 CFloatPlaylistDlg* m_pFloatPlaylistDlg; //浮动播放列表对话框 142 CPoint m_float_playlist_pos{ INT_MAX, INT_MAX }; //浮动播放列表的位置 143 144 CWinThread* m_pThread; //执行在线查看的线程 145 static UINT ViewOnlineThreadFunc(LPVOID lpParam); //执行在线查看的线程函数 146 147 CWinThread* m_pDownloadThread; //执行自动下载歌词和专辑封面的线程 148 static UINT DownloadLyricAndCoverThreadFunc(LPVOID lpParam); //执行自动下载歌词和专辑封面的线程函数 149 150 CWinThread* m_uiThread; //主界面绘图的线程 151 static UINT UiThreadFunc(LPVOID lpParam); //主界面绘图的线程函数 152 153 struct UIThreadPara 154 { 155 bool draw_reset{ false }; //主界面绘图需要重置 156 bool ui_thread_exit{ false }; //指示线程退出 157 bool ui_force_refresh{ false }; //指示主界面强制重绘 158 bool search_box_force_refresh{ false }; //指示搜索框界面强制重绘 159 bool is_active_window{ false }; //指示当前窗口是否为激活窗口 160 bool is_completely_covered{ false }; //指示当前激活的窗口是否完全覆盖主界面 161 }; 162 UIThreadPara m_ui_thread_para{}; 163 164 int m_play_error_cnt{}; //统计播放出错的次数 165 int m_fps_cnt{}; //用于统计当前帧率 166 167 CNotifyIcon m_notify_icon; 168 169 bool m_theme_color_changed{ false }; 170 171 CDevicesManager* devicesManager; 172 173 static DEVICE_NOTIFY_CALLBACK_ROUTINE DeviceNotifyCallbackRoutine; 174 HPOWERNOTIFY RegistrationHandle; 175 176 // 来自https://www.jianshu.com/p/9d4b68cdbd99 177 struct Monitors 178 { 179 std::vector<MONITORINFO> monitorinfos; 180 MonitorEnumMonitors181 static BOOL CALLBACK MonitorEnum(HMONITOR hMon, HDC hdc, LPRECT lprcMonitor, LPARAM pData) 182 { 183 MONITORINFO iMonitor; 184 iMonitor.cbSize = sizeof(MONITORINFO); 185 GetMonitorInfo(hMon, &iMonitor); 186 187 Monitors* pThis = reinterpret_cast<Monitors*>(pData); 188 pThis->monitorinfos.push_back(iMonitor); 189 return TRUE; 190 } 191 MonitorsMonitors192 Monitors() 193 { 194 EnumDisplayMonitors(0, 0, MonitorEnum, (LPARAM)this); 195 } 196 }; 197 198 private: 199 void SaveConfig(); //保存设置到ini文件 200 void LoadConfig(); //从ini文件读取设置 201 void SetTransparency(); //根据m_transparency的值设置窗口透明度 202 void SetDesptopLyricTransparency(); 203 void DrawInfo(bool reset = false); //绘制信息 204 void SetPlaylistSize(int cx, int cy, int playlist_width); //设置播放列表的大小 205 void SetDrawAreaSize(int cx, int cy, int playlist_width); 206 void SetAlwaysOnTop(); 207 void AdjustVolume(int step); 208 209 bool IsMainWindowPopupMenu() const; //当前弹出的右键是主窗口右键菜单还是播放列表右键菜单 210 211 static int CalculatePlaylistWidth(int client_width); 212 213 public: 214 void ShowPlayList(bool highlight_visible = true); 215 void SetMenuState(CMenu* pMenu); 216 void SetPlaylistSelected(const vector<int>& indexes); 217 void SetUiPlaylistSelected(int index); 218 219 static bool IsPointValid(CPoint); 220 int UpdatePlaylistCtrlPosition(CWnd* pParent, CWnd* pStatic, CWnd* pEdit); //更新播放列表上方的CStatic和CEdit控件的大小和位置,返回CStatic的宽度 GetPathStaticWidth()221 int GetPathStaticWidth() const { return m_part_static_width; } 222 223 protected: 224 void SetPlayListColor(bool highlight_visible = true); 225 void SwitchTrack(); //当切换正在播放的歌曲时的处理 226 void UpdateSongInfoToolTip(); 227 void SetPlaylistVisible(); 228 void SetMenubarVisible(); 229 230 // 初始化程序任务栏信息,窗口创建后以及窗口SW_HIDE后恢复时调用 231 void TaskBarInit(); 232 233 // 更新任务栏按钮上的播放进度与进度指示的颜色,平时由主定时器调用以保持进度更新 234 void UpdateTaskBarProgress(bool force = false) const; 235 // 根据当前播放状态更新“播放/暂停”按钮上的文字和图标(以及任务栏图标角标&按钮状态) 236 void UpdatePlayPauseButton(); 237 // 设置任务栏缩略图的区域 238 void TaskBarSetClipArea(CRect rect); 239 240 void EnablePlaylist(bool enable); //设置启用或禁用播放列表控件 241 242 void FirstRunCreateShortcut(); // 如果是首次运行那么提示用户是否创建桌面快捷方式 243 244 void ApplySettings(const COptionsDlg& optionDlg); //从选项设置对话框获取设置 245 void ApplyThemeColor(); //应用主题颜色设置 246 247 void ThemeColorChanged(); 248 249 250 void ShowFloatPlaylist(); 251 void HideFloatPlaylist(); 252 253 void ShowHidePlaylist(); 254 void ShowHideFloatPlaylist(); 255 256 void GetPlaylistItemSelected(int cur_index); 257 void GetPlaylistItemSelected(); 258 void IniPlaylistPopupMenu(); //初始化所有右键菜单中的“添加到播放列表”子菜单 259 void InitUiMenu(); //初始化所有“切换界面”子菜单 260 261 void SetPlaylistDragEnable(); //设置播放列表是事允许拖动排序 262 263 void _OnOptionSettings(CWnd* pParent); 264 265 void DoLyricsAutoSave(bool no_inquiry = false); //保存未修改的歌词,如果no_inquiry为true,则不弹出提示信息 266 void UpdateABRepeatToolTip(); 267 268 void LoadDefaultBackground(); 269 270 void SelectUi(int ui_selected); 271 int GetUiSelected() const; 272 CPlayerUIBase* GetCurrentUi(); 273 274 void GetScreenInfo(); 275 void MoveDesktopLyricWindowPos(); 276 277 bool IsFloatPlaylistExist(); 278 bool MoveFloatPlaylistPos(); 279 280 void SaveUiData(); 281 void LoadUiData(); 282 283 static void OnSplitterChanged(CRect splitter_rect); 284 285 // 生成的消息映射函数 286 virtual BOOL OnInitDialog(); 287 afx_msg void OnSysCommand(UINT nID, LPARAM lParam); 288 afx_msg void OnPaint(); 289 afx_msg HCURSOR OnQueryDragIcon(); 290 DECLARE_MESSAGE_MAP() 291 292 afx_msg void OnSize(UINT nType, int cx, int cy); 293 afx_msg void OnTimer(UINT_PTR nIDEvent); 294 afx_msg void OnPlayPause(); 295 afx_msg void OnPlay(); 296 afx_msg void OnPause(); 297 afx_msg void OnStop(); 298 afx_msg void OnPrevious(); 299 afx_msg void OnNext(); 300 afx_msg void OnRew(); 301 afx_msg void OnFF(); 302 afx_msg void OnMediaLib(); 303 afx_msg void OnFind(); 304 afx_msg void OnExplorePath(); 305 virtual BOOL PreTranslateMessage(MSG* pMsg); 306 afx_msg void OnDestroy(); 307 afx_msg void OnAppAbout(); 308 afx_msg void OnFileOpen(); 309 afx_msg void OnFileOpenFolder(); 310 public: 311 afx_msg void OnDropFiles(HDROP hDropInfo); 312 protected: 313 afx_msg void OnInitMenu(CMenu* pMenu); 314 afx_msg void OnRepeatMode(); 315 afx_msg void OnPlayOrder(); 316 afx_msg void OnPlayShuffle(); 317 afx_msg void OnLoopPlaylist(); 318 afx_msg void OnLoopTrack(); 319 afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt); 320 //afx_msg void OnBnClickedVolumeUp(); 321 //afx_msg void OnBnClickedVolumeDown(); 322 afx_msg void OnGetMinMaxInfo(MINMAXINFO* lpMMI); 323 afx_msg void OnNMDblclkPlaylistList(NMHDR* pNMHDR, LRESULT* pResult); 324 //afx_msg void OnRefreshPlaylist(); 325 afx_msg void OnOptionSettings(); 326 afx_msg void OnReloadPlaylist(); 327 afx_msg void OnNMRClickPlaylistList(NMHDR* pNMHDR, LRESULT* pResult); 328 afx_msg void OnPlayItem(); 329 afx_msg void OnItemProperty(); 330 //afx_msg void OnRemoveFromPlaylist(); 331 // afx_msg void OnClearPlaylist(); 332 afx_msg void OnExploreTrack(); 333 virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam); 334 afx_msg void OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2); 335 //afx_msg void OnStnClickedProgressStatic(); 336 afx_msg void OnReIniBass(); 337 afx_msg void OnSortByFile(); 338 afx_msg void OnSortByPath(); 339 afx_msg void OnSortByTitle(); 340 afx_msg void OnSortByArtist(); 341 afx_msg void OnSortByAlbum(); 342 afx_msg void OnSortByTrack(); 343 afx_msg void OnSortByListenTime(); 344 afx_msg void OnSortByModifiedTime(); 345 public: 346 afx_msg void OnDeleteFromDisk(); 347 protected: 348 afx_msg LRESULT OnTaskbarcreated(WPARAM wParam, LPARAM lParam); 349 public: 350 afx_msg void OnDispFileName(); 351 afx_msg void OnDispTitle(); 352 afx_msg void OnDispArtistTitle(); 353 afx_msg void OnDispTitleArtist(); 354 afx_msg void OnMiniMode(); 355 356 afx_msg void OnReloadLyric(); 357 afx_msg void OnSongInfo(); 358 afx_msg void OnCopyCurrentLyric(); 359 afx_msg void OnCopyAllLyric(); 360 afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); 361 afx_msg void OnLyricForward(); 362 afx_msg void OnLyricDelay(); 363 afx_msg void OnSaveModifiedLyric(); 364 afx_msg void OnEditLyric(); 365 afx_msg void OnDownloadLyric(); 366 afx_msg void OnLyricBatchDownload(); 367 afx_msg void OnDeleteLyric(); 368 afx_msg void OnRButtonUp(UINT nFlags, CPoint point); 369 afx_msg void OnMouseMove(UINT nFlags, CPoint point); 370 afx_msg void OnLButtonUp(UINT nFlags, CPoint point); 371 afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); 372 protected: 373 afx_msg LRESULT OnPlaylistIniComplate(WPARAM wParam, LPARAM lParam); 374 afx_msg LRESULT OnAfterSetTrack(WPARAM wParam, LPARAM lParam); 375 public: 376 afx_msg void OnEqualizer(); 377 afx_msg void OnExploreOnline(); 378 protected: 379 afx_msg LRESULT OnPlaylistIniStart(WPARAM wParam, LPARAM lParam); 380 public: 381 afx_msg void OnBrowseLyric(); 382 afx_msg void OnTranslateToSimplifiedChinese(); 383 afx_msg void OnTranslateToTranditionalChinese(); 384 afx_msg void OnAlbumCoverSaveAs(); 385 protected: 386 afx_msg LRESULT OnConnotPlayWarning(WPARAM wParam, LPARAM lParam); 387 public: 388 afx_msg void OnEnChangeSearchEdit(); 389 //afx_msg void OnBnClickedClearSearchButton(); 390 afx_msg void OnDownloadAlbumCover(); 391 protected: 392 afx_msg LRESULT OnPostMusicStreamOpened(WPARAM wParam, LPARAM lParam); 393 afx_msg LRESULT OnMusicStreamOpened(WPARAM wParam, LPARAM lParam); 394 public: 395 afx_msg void OnCurrentExploreOnline(); 396 afx_msg void OnDeleteAlbumCover(); 397 afx_msg void OnCopyFileTo(); 398 afx_msg void OnMoveFileTo(); 399 afx_msg void OnFormatConvert(); 400 afx_msg void OnFormatConvert1(); 401 protected: 402 afx_msg LRESULT OnSettingsApplied(WPARAM wParam, LPARAM lParam); 403 afx_msg LRESULT OnAlbumCoverDownloadComplete(WPARAM wParam, LPARAM lParam); 404 public: 405 afx_msg void OnColorizationColorChanged(DWORD dwColorizationColor, BOOL bOpacity); 406 afx_msg void OnSupportedFormat(); 407 afx_msg void OnSwitchUi(); 408 afx_msg void OnVolumeUp(); 409 afx_msg void OnVolumeDown(); 410 protected: 411 afx_msg LRESULT OnNotifyicon(WPARAM wParam, LPARAM lParam); 412 public: 413 afx_msg void OnClose(); 414 virtual void OnCancel(); 415 afx_msg void OnMenuExit(); 416 afx_msg void OnMinimodeRestore(); 417 afx_msg void OnAppCommand(CWnd* pWnd, UINT nCmd, UINT nDevice, UINT nKey); 418 afx_msg void OnLButtonDown(UINT nFlags, CPoint point); 419 afx_msg void OnShowPlaylist(); 420 afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); 421 afx_msg void OnMouseLeave(); 422 afx_msg void OnShowMenuBar(); 423 afx_msg void OnFullScreen(); 424 afx_msg void OnCreatePlayShortcut(); 425 afx_msg void OnListenStatistics(); 426 afx_msg void OnDarkMode(); 427 protected: 428 afx_msg LRESULT OnMainMenuPopup(WPARAM wParam, LPARAM lParam); 429 public: 430 afx_msg void OnAlwaysOnTop(); 431 afx_msg void OnFloatPlaylist(); 432 afx_msg void OnDockedPlaylist(); 433 afx_msg void OnFloatedPlaylist(); 434 afx_msg LRESULT OnFloatPlaylistClosed(WPARAM wParam, LPARAM lParam); 435 afx_msg void OnPlaylistAddFile(); 436 afx_msg void OnRemoveFromPlaylist(); 437 afx_msg void OnEmptyPlaylist(); 438 afx_msg void OnMovePlaylistItemUp(); 439 afx_msg void OnMovePlaylistItemDown(); 440 afx_msg void OnNMClickPlaylistList(NMHDR* pNMHDR, LRESULT* pResult); 441 afx_msg void OnRemoveSameSongs(); 442 afx_msg void OnAddToNewPlaylist(); 443 afx_msg void OnToolFileRelate(); 444 afx_msg void OnPlaylistAddFolder(); 445 afx_msg void OnRemoveInvalidItems(); 446 protected: 447 afx_msg LRESULT OnListItemDragged(WPARAM wParam, LPARAM lParam); 448 public: 449 afx_msg void OnAddRemoveFromFavourite(); 450 afx_msg void OnFileOpenUrl(); 451 afx_msg void OnPlaylistAddUrl(); 452 protected: 453 afx_msg LRESULT OnSetMenuState(WPARAM wParam, LPARAM lParam); 454 public: 455 afx_msg void OnLockDesktopLryic(); 456 afx_msg void OnCloseDesktopLyric(); 457 afx_msg void OnLyricDisplayedDoubleLine(); 458 afx_msg void OnLyricBackgroundPenetrate(); 459 afx_msg void OnPlaylistSelectChange(); 460 afx_msg void OnPlaylistSelectAll(); 461 afx_msg void OnPlaylistSelectNone(); 462 afx_msg void OnPlaylistSelectRevert(); 463 protected: 464 afx_msg LRESULT OnCurPlaylistRenamed(WPARAM wParam, LPARAM lParam); 465 public: 466 afx_msg void OnOnlineHelp(); 467 afx_msg void OnSpeedUp(); 468 afx_msg void OnSlowDown(); 469 afx_msg void OnOriginalSpeed(); 470 afx_msg void OnPitchUp(); 471 afx_msg void OnPitchDown(); 472 afx_msg void OnOriginalPitch(); 473 protected: 474 afx_msg LRESULT OnSearchEditBtnClicked(WPARAM wParam, LPARAM lParam); 475 afx_msg LRESULT OnInitAddToMenu(WPARAM wParam, LPARAM lParam); 476 afx_msg LRESULT OnMsgOptionSettings(WPARAM wParam, LPARAM lParam); 477 public: 478 afx_msg void OnAlwaysShowStatusBar(); 479 afx_msg void OnShowMainWindow(); 480 protected: 481 afx_msg LRESULT OnRecentPlayedListCleared(WPARAM wParam, LPARAM lParam); 482 public: 483 afx_msg void OnAbRepeat(); 484 afx_msg void OnSetAPoint(); 485 afx_msg void OnSetBPoint(); 486 afx_msg void OnResetAbRepeat(); 487 afx_msg void OnNextAbRepeat(); 488 afx_msg void OnSaveCurrentPlaylistAs(); 489 afx_msg void OnFileOpenPlaylist(); 490 //afx_msg void OnExportCurrentPlaylist(); 491 afx_msg void OnSaveAsNewPlaylist(); 492 afx_msg void OnCreateDesktopShortcut(); 493 afx_msg void OnCreateMiniModeShortCut(); 494 afx_msg void OnRemoveCurrentFromPlaylist(); 495 afx_msg void OnDeleteCurrentFromDisk(); 496 afx_msg BOOL OnQueryEndSession(); 497 afx_msg void OnAlwaysUseExternalAlbumCover(); 498 afx_msg BOOL OnCopyData(CWnd* pWnd, COPYDATASTRUCT* pCopyDataStruct); 499 afx_msg void OnRelateLocalLyric(); 500 afx_msg void OnAlbumCoverInfo(); 501 afx_msg void OnUnlinkLyric(); 502 afx_msg void OnShowDesktopLyric(); 503 protected: 504 afx_msg LRESULT OnMainWindowActivated(WPARAM wParam, LPARAM lParam); 505 public: 506 afx_msg void OnContainSubFolder(); 507 protected: 508 afx_msg LRESULT OnGetMusicCurrentPosition(WPARAM wParam, LPARAM lParam); 509 public: 510 afx_msg void OnPlayRandom(); 511 protected: 512 afx_msg LRESULT OnCurrentFileAlbumCoverChanged(WPARAM wParam, LPARAM lParam); 513 public: 514 afx_msg void OnRename(); 515 afx_msg void OnEmbedLyricToAudioFile(); 516 afx_msg void OnDeleteLyricFromAudioFile(); 517 protected: 518 afx_msg LRESULT OnAfterMusicStreamClosed(WPARAM wParam, LPARAM lParam); 519 public: 520 afx_msg void OnPlayTrack(); 521 afx_msg void OnShowLyricTranslate(); 522 afx_msg void OnViewArtist(); 523 afx_msg void OnViewAlbum(); 524 afx_msg void OnLocateToCurrent(); 525 afx_msg void OnUseStandardTitleBar(); 526 void ApplyShowStandardTitlebar(); 527 protected: 528 afx_msg LRESULT OnReInitBassContinuePlay(WPARAM wParam, LPARAM lParam); 529 afx_msg LRESULT OnDisplaychange(WPARAM wParam, LPARAM lParam); 530 public: 531 afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos); 532 afx_msg void OnWindowPosChanged(WINDOWPOS* lpwndpos); 533 afx_msg void OnPlaylistViewArtist(); 534 afx_msg void OnPlaylistViewAlbum(); 535 protected: 536 afx_msg LRESULT OnVolumeChanged(WPARAM wParam, LPARAM lParam); 537 public: 538 afx_msg void OnPlaylistOptions(); 539 afx_msg void OnMove(int x, int y); 540 541 protected: 542 afx_msg LRESULT OnRecentFolderOrPlaylistChanged(WPARAM wParam, LPARAM lParam); 543 public: 544 afx_msg void OnPlayAsNext(); 545 afx_msg void OnPlaylistFixPathError(); 546 afx_msg UINT OnPowerBroadcast(UINT nPowerEvent, LPARAM nEventData); 547 protected: 548 afx_msg LRESULT OnSetUiForceFreshFlag(WPARAM wParam, LPARAM lParam); 549 afx_msg void OnMoreRecentItems(); 550 public: 551 afx_msg void OnNcCalcSize(BOOL bCalcValidRects, NCCALCSIZE_PARAMS* lpncsp); 552 protected: 553 afx_msg LRESULT OnClearUiSerchBox(WPARAM wParam, LPARAM lParam); 554 }; 555