/******************************Public*Routine******************************\ * VideoCd_OnSize * \**************************************************************************/ void VideoCd_OnSize( HWND hwnd, UINT state, int dx, int dy ) { if(IsWindow(g_hwndStatusbar)) { int Pane[2] = {dx/2-8, -1}; SendMessage(g_hwndStatusbar, WM_SIZE, 0, 0L); SendMessage(g_hwndStatusbar, SB_SETPARTS, 2, (LPARAM)Pane); } if(IsWindow(g_hwndTrackbar)) { SetWindowPos(g_hwndTrackbar, HWND_TOP, LEFT_MARGIN, dyToolbar - 1, dx - (2 * LEFT_MARGIN), dyTrackbar, SWP_NOZORDER); } if(IsWindow(g_hwndToolbar)) { SendMessage(g_hwndToolbar, WM_SIZE, 0, 0L); } RepositionMovie(hwnd); }
/******************************Public*Routine******************************\ * VideoCd_OnSize * \**************************************************************************/ void VideoCd_OnSize( HWND hwnd, UINT state, int dx, int dy ) { if(IsWindow(g_hwndToolbar)) SendMessage(g_hwndToolbar, WM_SIZE, 0, 0L); RepositionMovie(hwnd); }
/******************************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]; wsprintf(achTmp, IdStr(STR_APP_TITLE_LOADED), g_achFileName); g_State = (VCD_LOADED | VCD_STOPPED); RepositionMovie(hwndApp); InvalidateRect(hwndApp, NULL, TRUE); if(bPlay) { pMpegMovie->PlayMovie(); } } else { MessageBox(hwndApp, TEXT("Failed to open the movie! "), IdStr(STR_APP_TITLE), MB_OK); pMpegMovie->CloseMovie(); delete pMpegMovie; pMpegMovie = NULL; } } InvalidateRect(hwndApp, NULL, FALSE); UpdateWindow(hwndApp); }
/******************************Public*Routine******************************\ * ProcessOpen * \**************************************************************************/ void ProcessOpen( TCHAR achFileName[][MAX_PATH], DWORD dwNumFiles, BOOL bPlay ) { /* ** If we currently have a video loaded, we need to discard it here */ if(GetMovieMode() != MOVIE_NOTOPENED ) { CubeCloseCmd(); } // Create a CMovie class g_pMovie = new CMovie(g_hwndApp); if(g_pMovie) { HRESULT hr = g_pMovie->OpenMovie(achFileName, dwNumFiles); if(SUCCEEDED(hr)) { RepositionMovie(g_hwndApp); InvalidateRect(g_hwndApp, NULL, TRUE); if(bPlay) g_pMovie->PlayMovie(); } else { TCHAR appTitle[100]; MessageBox(g_hwndApp, TEXT("Failed to render the movie with Video Mixing Renderer! "), IdStr(STR_APP_TITLE, appTitle, sizeof appTitle ), MB_OK); g_pMovie->CloseMovie(); delete g_pMovie; g_pMovie = NULL; } } InvalidateRect(g_hwndApp, NULL, FALSE); UpdateWindow(g_hwndApp); }
/*****************************Private*Routine******************************\ * VideoCd_OnMove * \**************************************************************************/ void VideoCd_OnMove( HWND hwnd, int x, int y ) { if(pMpegMovie) { if(pMpegMovie->GetStateMovie() != State_Running) { RepositionMovie(hwnd); } else { long xPos, yPos, cx, cy; // Reposition movie but don't invalidate the rect, since // the next video frame will handle the redraw. GetMoviePosition(hwnd, &xPos, &yPos, &cx, &cy); pMpegMovie->PutMoviePosition(xPos, yPos, cx, cy); } } }
/******************************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); }