Files
Client/Library/dxx8/samples/Multimedia/DirectShow_WinXP/VMR/VMRXcl/commands.cpp
LGram16 e067522598 Initial commit: ROW Client source code
Game client codebase including:
- CharacterActionControl: Character and creature management
- GlobalScript: Network, items, skills, quests, utilities
- RYLClient: Main client application with GUI and event handlers
- Engine: 3D rendering engine (RYLGL)
- MemoryManager: Custom memory allocation
- Library: Third-party dependencies (DirectX, boost, etc.)
- Tools: Development utilities

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 16:24:34 +09:00

143 lines
4.0 KiB
C++

//----------------------------------------------------------------------------
// File: commands.cpp
//
// Desc: DirectShow sample code
// Processes commands from the user.
//
// Copyright (c) 2000-2001 Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
#include "project.h"
#include <mmreg.h>
#include <commctrl.h>
#include <stdio.h>
#include <io.h>
#include "resrc1.h"
// Function prototypes
void RepositionMovie(HWND hwnd);
bool FindMediaFile(TCHAR * achFileName, TCHAR * achFoundFile);
// External data
extern TCHAR g_achFileName[];
extern CMpegMovie * pMpegMovie;
//----------------------------------------------------------------------------
// ProcessOpen
//
// Creates instance of CMpegMovie and plays it. Called from user UI functions.
//
// Parameters:
// achFileName - path to the file to play
// bPlay - start demonstration if true
//----------------------------------------------------------------------------
BOOL
ProcessOpen(
TCHAR *achFileName,
BOOL bPlay
)
{
TCHAR achFoundFile[MAX_PATH];
if( !FindMediaFile(achFileName, achFoundFile) )
{
InvalidateRect( hwndApp, NULL, FALSE );
UpdateWindow( hwndApp );
return false;
}
lstrcpy(g_achFileName, achFoundFile);
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 );
return TRUE;
}
//----------------------------------------------------------------------------
// FindMediaFile
//
// Provides FileOpen dialog to select media file or processes command line
//
// Parameters:
// achFileName - command line
// achFoundFile - path to the file to play
//
// Return: true if success
//----------------------------------------------------------------------------
bool FindMediaFile(TCHAR * achFileName, TCHAR * achFoundFile)
{
long lFindRes;
struct _finddata_t fileinfo;
lFindRes = _findfirst( achFileName, &fileinfo );
if( -1 != lFindRes )
{
lstrcpy(achFoundFile, achFileName);
return true;
}
OPENFILENAME ofn;
TCHAR szBuffer[MAX_PATH];
lstrcpy(szBuffer, TEXT(""));
static char szFilter[] = "Video Files (.MOV, .AVI, .MPG, .VOB, .QT)\0*.AVI;*.MOV;*.MPG;*.VOB;*.QT\0" \
"All Files (*.*)\0*.*\0\0";
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = NULL;
ofn.hInstance = NULL;
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrCustomFilter = NULL;
ofn.nMaxCustFilter = 0;
ofn.lpstrFile = szBuffer;
ofn.nMaxFile = _MAX_PATH;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.lpstrTitle = "VMRXCL: Select a video file to play...";
ofn.Flags = OFN_HIDEREADONLY;
ofn.nFileOffset = 0;
ofn.nFileExtension = 0;
ofn.lpstrDefExt = "mov";
ofn.lCustData = 0L;
ofn.lpfnHook = NULL;
ofn.lpTemplateName = NULL;
if (GetOpenFileName (&ofn)) // user specified a file
{
lstrcpy(achFoundFile, ofn.lpstrFile);
return true;
}// if
return false;
}