void CMainWnd::OnPlayStop() { // レジューム用の情報を取得しておく if (m_pOptions->m_fResume && MAP_GetStatus(m_hMap) != MAP_STATUS_STOP) { m_pOptions->m_nResumeTime = MAP_GetCurrent(m_hMap); } if (MAP_GetStatus(m_hMap) == MAP_STATUS_STOP) MAP_AudioDeviceClose(m_hMap); // 停止処理 Stop(); // シャッフルフラグをリセット if (m_pOptions->m_fShuffle) { ResetShuffle(); FILEINFO* p = (FILEINFO*)m_pListFile->GetAt(m_nCurrent); if (p) p->fShuffle = TRUE; } // レジュームの場合時刻をセット if (m_pOptions->m_fResume) { MAP_Seek(m_hMap, m_pOptions->m_nResumeTime); m_pOptions->m_nResumeTime = 0; } UpdateTime(); UpdateStatus(); UpdateStreamTitle(); }
BOOL CPpcMainWnd::Create(LPTSTR pszCmdLine, HWND hwndParent, DWORD dwStyle) { CWaitCursor wc; // クラスの登録 RegisterClass(); // ウインドウ作成 CreateWindow(MAINWND_CLASS_NAME, MAINWND_TITLE, WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT, PPC_MAINWND_WIDTH, PPC_MAINWND_HEIGHT, NULL, NULL, GetInst(), this); if (!m_hWnd) return FALSE; ShowWindow(m_hWnd, SW_SHOW); UpdateWindow(m_hWnd); if (_tcslen(pszCmdLine)) { SendCmdLine(m_hWnd, pszCmdLine); } else { // デフォルトリストの読み込み if (((CPpcOptions*)m_pOptions)->m_fSaveDefList) { m_nCurrent = 0; // 開かないようにする // 読み込み m_fNoListRedraw = TRUE; SendMessage(m_hwndLV, WM_SETREDRAW, 0, 0); TCHAR szPath[MAX_PATH]; GetDefPlayListPath(szPath); LoadPlayList(szPath); SendMessage(m_hwndLV, WM_SETREDRAW, 1, 0); m_fNoListRedraw = FALSE; InvalidateRect(m_hwndLV, 0, FALSE); UpdateWindow(m_hwndLV); m_nCurrent = OPEN_NONE; // レジューム情報を反映する if (((CPpcOptions*)m_pOptions)->m_fResume && ((CPpcOptions*)m_pOptions)->m_nResumeTrack != -1 && ((CPpcOptions*)m_pOptions)->m_nResumeTrack < m_pListFile->GetCount()) { Open(((CPpcOptions*)m_pOptions)->m_nResumeTrack); if (m_nCurrent == OPEN_NONE) OpenFirstFile(); else { MAP_Seek(m_hMap, ((CPpcOptions*)m_pOptions)->m_nResumeTime); ((CPpcOptions*)m_pOptions)->m_nResumeTime = 0; } } else OpenFirstFile(); if (((CPpcOptions*)m_pOptions)->m_fPlayOnStart) Play(); } } return TRUE; }
void CMainWnd::OnPlayPrev() { BOOL fPlay = MAP_GetStatus(m_hMap) != MAP_STATUS_STOP; // ファイル再生の時に再生時間が2秒以上なら先頭に // 2秒未満の場合は前の曲 FILEINFO* pInfo = GetInfo(GetCurrentFile()); if (pInfo && !IsURL(pInfo->szPath)) { long lCurrent = MAP_GetCurrent(m_hMap); if (fPlay && lCurrent > 2000) { MAP_Seek(m_hMap, 0); return; } } int nPrev = GetPrevIndex(); if (nPrev == OPEN_NONE) return; Open(nPrev); if (fPlay) Play(); }