windows-nt/Source/XPSP1/NT/multimedia/dshow/tools/vcdplyer/app.h
2020-09-26 16:20:57 +08:00

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};