/*****************************Private*Routine******************************\ * VideoCd_OnCommand * \**************************************************************************/ void VideoCd_OnCommand( HWND hwnd, int id, HWND hwndCtl, UINT codeNotify ) { switch(id) { case IDM_FILE_OPEN: if(VcdPlayerOpenCmd()) VcdPlayerPlayCmd(); break; case IDM_FILE_CLOSE: VcdPlayerCloseCmd(); QzFreeUnusedLibraries(); break; case IDM_FILE_EXIT: PostMessage(hwnd, WM_CLOSE, 0, 0L); break; case IDM_MOVIE_PLAY: VcdPlayerPlayCmd(); break; case IDM_MOVIE_STOP: VcdPlayerStopCmd(); VcdPlayerRewindCmd(); break; case IDM_MOVIE_PAUSE: VcdPlayerPauseCmd(); break; case IDM_MOVIE_SKIP_FORE: VcdPlayerSeekCmd(1.0); break; case IDM_MOVIE_SKIP_BACK: VcdPlayerSeekCmd(-1.0); break; case IDM_MOVIE_PREVTRACK: if(pMovie) { VcdPlayerSeekCmd(-pMovie->GetCurrentPosition()); } break; case IDM_MOVIE_STEP: VcdPlayerPauseCmd(); VcdPlayerStepCmd(); break; case IDM_TIME: case IDM_FRAME: case IDM_FIELD: case IDM_SAMPLE: case IDM_BYTES: if(pMovie) { g_TimeFormat = VcdPlayerChangeTimeFormat(id); } break; case IDM_HELP_ABOUT: DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hwnd, (DLGPROC) AboutDlgProc); break; default: if(id > ID_RECENT_FILE_BASE && id <= (ID_RECENT_FILE_BASE + MAX_RECENT_FILES + 1)) { ProcessOpen(aRecentFiles[id - ID_RECENT_FILE_BASE - 1]); VcdPlayerPlayCmd(); } break; } SetPlayButtonsEnableState(); }
/******************************Public*Routine******************************\ * ProcessOpen * \**************************************************************************/ void ProcessOpen( TCHAR *achFileName, BOOL bPlay ) { /* ** If we currently have a video loaded we need to discard it here. */ if(g_State & VCD_LOADED) { VcdPlayerCloseCmd(); } lstrcpy(g_achFileName, achFileName); pMpegMovie = new CMpegMovie(hwndApp); if(pMpegMovie) { HRESULT hr = pMpegMovie->OpenMovie(g_achFileName); if(SUCCEEDED(hr)) { TCHAR achTmp[MAX_PATH]; nRecentFiles = SetRecentFiles(achFileName, nRecentFiles); wsprintf(achTmp, IdStr(STR_APP_TITLE_LOADED), g_achFileName); g_State = (VCD_LOADED | VCD_STOPPED); // SetDurationLength(pMpegMovie->GetDuration()); g_TimeFormat = VcdPlayerChangeTimeFormat(g_TimeFormat); RepositionMovie(hwndApp); pMpegMovie->SetBorderClr(RGB(0x00, 0x80, 0x80)); // If play if(bPlay) { pMpegMovie->PlayMovie(); } } else { TCHAR Buffer[MAX_ERROR_TEXT_LEN]; if(AMGetErrorText(hr, Buffer, MAX_ERROR_TEXT_LEN)) { MessageBox(hwndApp, Buffer, IdStr(STR_APP_TITLE), MB_OK); } else { MessageBox(hwndApp, TEXT("Failed to open the movie. Either the file was ") TEXT("not found or the wave device is in use."), IdStr(STR_APP_TITLE), MB_OK); } pMpegMovie->CloseMovie(); delete pMpegMovie; pMpegMovie = NULL; } } InitStreamParams(0); InvalidateRect(hwndApp, NULL, FALSE); UpdateWindow(hwndApp); }