459 lines
7.1 KiB
C
459 lines
7.1 KiB
C
|
/******************************Module*Header*******************************\
|
||
|
* Module Name: app.h
|
||
|
*
|
||
|
* Function prototype for the Video CD Player application.
|
||
|
*
|
||
|
*
|
||
|
* Created: dd-mm-94
|
||
|
* Author: Stephen Estrop [StephenE]
|
||
|
*
|
||
|
* Copyright (c) 1994 - 1999 Microsoft Corporation. All Rights Reserved.
|
||
|
\**************************************************************************/
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/* -------------------------------------------------------------------------
|
||
|
** Functions prototypes
|
||
|
** -------------------------------------------------------------------------
|
||
|
*/
|
||
|
int
|
||
|
DoMainLoop(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
InitApplication(
|
||
|
HINSTANCE hInstance
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
InitInstance(
|
||
|
HINSTANCE hInstance,
|
||
|
int nCmdShow
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
LoadWindowPos(
|
||
|
LPRECT lprc
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
SaveWindowPos(
|
||
|
HWND hwnd
|
||
|
);
|
||
|
|
||
|
void
|
||
|
PatB(
|
||
|
HDC hdc,
|
||
|
int x,
|
||
|
int y,
|
||
|
int dx,
|
||
|
int dy,
|
||
|
DWORD rgb
|
||
|
);
|
||
|
|
||
|
void
|
||
|
UpdateMpegMovieRect(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
void
|
||
|
GetAdjustedClientRect(
|
||
|
RECT *prc
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
DrawStats(
|
||
|
HDC hdc
|
||
|
);
|
||
|
|
||
|
void
|
||
|
CalcMovieRect(
|
||
|
LPRECT lprc
|
||
|
);
|
||
|
|
||
|
LPCTSTR
|
||
|
IdStr(
|
||
|
int idResource
|
||
|
);
|
||
|
|
||
|
void
|
||
|
UpdateSystemColors(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
#if 0
|
||
|
void
|
||
|
DrawShadowRect(
|
||
|
HDC hdc,
|
||
|
LPRECT lprc
|
||
|
);
|
||
|
#endif
|
||
|
|
||
|
void
|
||
|
SetDurationLength(
|
||
|
REFTIME rt
|
||
|
);
|
||
|
|
||
|
void
|
||
|
SetCurrentPosition(
|
||
|
REFTIME rt
|
||
|
);
|
||
|
|
||
|
TCHAR *
|
||
|
FormatRefTime(
|
||
|
TCHAR *sz,
|
||
|
REFTIME rt
|
||
|
);
|
||
|
|
||
|
void
|
||
|
DoMpegVideoPropertyPage();
|
||
|
|
||
|
void
|
||
|
DoMpegAudioPropertyPage();
|
||
|
|
||
|
/* -------------------------------------------------------------------------
|
||
|
** Registry stuff
|
||
|
** -------------------------------------------------------------------------
|
||
|
*/
|
||
|
int
|
||
|
ProfileIntIn(
|
||
|
const TCHAR *szKey,
|
||
|
int iDefault
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
ProfileIntOut(
|
||
|
const TCHAR *szKey,
|
||
|
int iDefault
|
||
|
);
|
||
|
|
||
|
void
|
||
|
ProfileStringOut (
|
||
|
LPTSTR szKey,
|
||
|
LPTSTR sz
|
||
|
);
|
||
|
|
||
|
UINT
|
||
|
ProfileStringIn (
|
||
|
LPTSTR szKey,
|
||
|
LPTSTR szDef,
|
||
|
LPTSTR sz,
|
||
|
DWORD cb
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
LoadWindowPos(
|
||
|
LPRECT lprc
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
SaveWindowPos(
|
||
|
HWND hwnd
|
||
|
);
|
||
|
|
||
|
HKEY
|
||
|
GetAppKey(
|
||
|
BOOL fCreate
|
||
|
);
|
||
|
|
||
|
|
||
|
/* -------------------------------------------------------------------------
|
||
|
** Message crackers
|
||
|
** -------------------------------------------------------------------------
|
||
|
*/
|
||
|
/* void Cls_OnUser(HWND hwnd, WPARAM wParam, LPARAM lParam ) */
|
||
|
#define HANDLE_WM_USER(hwnd, wParam, lParam, fn) \
|
||
|
((fn)(hwnd, wParam, lParam), 0L)
|
||
|
|
||
|
#ifndef HANDLE_WM_NOTIFY
|
||
|
/* LRESULT Cls_OnNotify(HWND hwnd, int idFrom, NMHDR FAR* pnmhdr); */
|
||
|
#define HANDLE_WM_NOTIFY(hwnd, wParam, lParam, fn) \
|
||
|
(fn)((hwnd), (int)(wParam), (NMHDR FAR*)(lParam))
|
||
|
#endif
|
||
|
|
||
|
|
||
|
|
||
|
/* -------------------------------------------------------------------------
|
||
|
** VideoCd window class prototypes
|
||
|
** -------------------------------------------------------------------------
|
||
|
*/
|
||
|
extern "C" LRESULT CALLBACK
|
||
|
VideoCdWndProc(
|
||
|
HWND hwnd,
|
||
|
UINT message,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnClose(
|
||
|
HWND hwnd
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
VideoCd_OnQueryEndSession(
|
||
|
HWND hwnd
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnDestroy(
|
||
|
HWND hwnd
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnCommand(
|
||
|
HWND hwnd,
|
||
|
int id,
|
||
|
HWND hwndCtl,
|
||
|
UINT codeNotify
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnPaint(
|
||
|
HWND hwnd
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnTimer(
|
||
|
HWND hwnd,
|
||
|
UINT id
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
VideoCd_OnCreate(
|
||
|
HWND hwnd,
|
||
|
LPCREATESTRUCT lpCreateStruct
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnSize(
|
||
|
HWND hwnd,
|
||
|
UINT state,
|
||
|
int cx,
|
||
|
int cy
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnKeyUp(
|
||
|
HWND hwnd,
|
||
|
UINT vk,
|
||
|
BOOL fDown,
|
||
|
int cRepeat,
|
||
|
UINT flags
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnActivate(
|
||
|
HWND hwnd,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnHScroll(
|
||
|
HWND hwnd,
|
||
|
HWND hwndCtl,
|
||
|
UINT code,
|
||
|
int pos
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnUser(
|
||
|
HWND hwnd,
|
||
|
WPARAM wParam,
|
||
|
LPARAM lParam
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnSysColorChange(
|
||
|
HWND hwnd
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnMenuSelect(
|
||
|
HWND hwnd,
|
||
|
HMENU hmenu,
|
||
|
int item,
|
||
|
HMENU hmenuPopup,
|
||
|
UINT flags
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnInitMenuPopup(
|
||
|
HWND hwnd,
|
||
|
HMENU hMenu,
|
||
|
UINT item,
|
||
|
BOOL fSystemMenu
|
||
|
);
|
||
|
|
||
|
#ifdef WM_NOTIFY
|
||
|
LRESULT
|
||
|
VideoCd_OnNotify(
|
||
|
HWND hwnd,
|
||
|
int idFrom,
|
||
|
NMHDR FAR* pnmhdr
|
||
|
);
|
||
|
#endif
|
||
|
|
||
|
|
||
|
void
|
||
|
VideoCd_OnGraphNotify(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VideoCd_OnDropFiles(
|
||
|
HWND hwnd,
|
||
|
HDROP hdrop);
|
||
|
|
||
|
void
|
||
|
SetPlayButtonsEnableState(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
/* -------------------------------------------------------------------------
|
||
|
** Command processing functions
|
||
|
** -------------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
BOOL
|
||
|
VcdPlayerSetLog(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
VcdPlayerSetPerfLogFile(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
VcdPlayerOpenCmd(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
VcdPlayerCloseCmd(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
VcdPlayerPlayCmd(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
VcdPlayerStopCmd(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
VcdPlayerPauseCmd(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
VcdPlayerPauseCmd(
|
||
|
void
|
||
|
);
|
||
|
|
||
|
void
|
||
|
VcdPlayerSeekCmd(
|
||
|
REFTIME rtSeekBy
|
||
|
);
|
||
|
|
||
|
void
|
||
|
ProcessOpen(
|
||
|
TCHAR *achFileName,
|
||
|
BOOL bPlay = FALSE
|
||
|
);
|
||
|
|
||
|
int
|
||
|
VcdPlayerChangeTimeFormat(
|
||
|
int id
|
||
|
);
|
||
|
|
||
|
|
||
|
/* -------------------------------------------------------------------------
|
||
|
** Recent filename stuff
|
||
|
** -------------------------------------------------------------------------
|
||
|
*/
|
||
|
typedef TCHAR RECENTFILES[MAX_PATH];
|
||
|
#define MAX_RECENT_FILES 5
|
||
|
#define ID_RECENT_FILE_BASE 500
|
||
|
|
||
|
int
|
||
|
GetRecentFiles(
|
||
|
int LastCount
|
||
|
);
|
||
|
|
||
|
int
|
||
|
SetRecentFiles(
|
||
|
TCHAR *FileName,
|
||
|
int iCount
|
||
|
);
|
||
|
|
||
|
|
||
|
/* -------------------------------------------------------------------------
|
||
|
** Global Variables
|
||
|
** -------------------------------------------------------------------------
|
||
|
*/
|
||
|
extern int cxMovie;
|
||
|
extern int cyMovie;
|
||
|
extern HWND hwndApp;
|
||
|
extern HWND g_hwndStatusbar;
|
||
|
|
||
|
extern int cx;
|
||
|
extern int cy;
|
||
|
extern int xOffset;
|
||
|
extern int yOffset;
|
||
|
extern TCHAR g_achFileName[];
|
||
|
extern OPENFILENAME ofn;
|
||
|
extern DWORD g_State;
|
||
|
extern HANDLE hRenderLog;
|
||
|
extern int nRecentFiles;
|
||
|
extern LONG lMovieOrgX, lMovieOrgY;
|
||
|
extern TCHAR g_szPerfLog[];
|
||
|
extern int g_TimeFormat;
|
||
|
extern BOOL g_bUseThreadedGraph;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/* -------------------------------------------------------------------------
|
||
|
** Constants
|
||
|
** -------------------------------------------------------------------------
|
||
|
*/
|
||
|
#define LEFT_MARGIN 2
|
||
|
|
||
|
|
||
|
|
||
|
/* -------------------------------------------------------------------------
|
||
|
** Video CD Player states
|
||
|
**
|
||
|
** These are bit flags
|
||
|
** -------------------------------------------------------------------------
|
||
|
*/
|
||
|
|
||
|
#define VCD_PLAYING 0x0001
|
||
|
#define VCD_STOPPED 0x0002
|
||
|
#define VCD_PAUSED 0x0004
|
||
|
#define VCD_SKIP_F 0x0008
|
||
|
#define VCD_SKIP_B 0x0010
|
||
|
#define VCD_FF 0x0020
|
||
|
#define VCD_RW 0x0040
|
||
|
#define VCD_SEEKING (VCD_FF | VCD_RW)
|
||
|
#define VCD_LOADED 0x0080
|
||
|
#define VCD_NO_CD 0x0100
|
||
|
#define VCD_DATA_CD_LOADED 0x0200
|
||
|
#define VCD_EDITING 0x0400
|
||
|
#define VCD_PAUSED_AND_MOVED 0x0800
|
||
|
#define VCD_PLAY_PENDING 0x1000
|
||
|
#define VCD_WAS_PLAYING 0x2000
|
||
|
#define VCD_IN_USE 0x4000
|
||
|
|
||
|
enum {PerformanceTimer = 32, StatusTimer = 33};
|