home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
cyber.net 2
/
cybernet2.ISO
/
qtw111
/
mplayer
/
movieutl.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-01-11
|
27KB
|
699 lines
// ---------------------------------------------------------------------
//
// MovieUtl.c - Movie Player - QuickTime for Windows
//
// Version 1.0
//
// (c) 1988-1992 Apple Computer, Inc. All Rights Reserved.
//
// ---------------------------------------------------------------------
// Includes
// --------
#include <Windows.H> // Required by Windows
#include <qtw.h> // Interface to QuickTime
#include <qtole.h> // Interface to qtole dll
#include <string.h> // Standard "C"
#include "common.h" // Interface to common.c
#include "player.h" // Interface to other *.c files
#include "player.hr" // Defines used in *.rc files
// Constants
// ---------
#define OPTIONSPROP "MovieOptionsProp"
// typedefs
// --------
typedef struct _tagWORKOPTIONS {
QTOLE_OPTIONSMOVIE SaveOptions;
LPQTOLE_OPTIONSMOVIE lpOptions;
HLOCAL hmem;
} WORKOPTIONS;
typedef WORKOPTIONS NEAR * NPWORKOPTIONS;
// Exported callback functions
// ----------------------------
BOOL __export CALLBACK GetOptionsDlgProc (HWND, UINT, WPARAM, LPARAM);
// Internal Function Declarations
// ------------------------------
static VOID NEAR SetDlgForOptions (HWND, LPQTOLE_OPTIONSMOVIE);
static VOID NEAR GetCurrentDlgSettings (HWND, LPQTOLE_OPTIONSMOVIE);
static VOID NEAR SaveOptionsAsDefault (LPQTOLE_OPTIONSMOVIE);
// Function: PlayerGetOptions - Opens the options dialog
// --------------------------------------------------------------------
// Parameters: HWND hwndParent HWND of dialog parent
// LPQTOLE_OPTIONSMOVIE lpOptions -> options struct
//
// Returns: LONG 0L if OK
// --------------------------------------------------------------------
BOOL FAR PlayerGetOptions( HWND hwndParent, LPQTOLE_OPTIONSMOVIE lpOptions )
{
BOOL bChangedOptions = FALSE;
DLGPROC lpDlgProc;
if( lpDlgProc = (DLGPROC) MakeProcInstance
( (FARPROC) GetOptionsDlgProc, PlayerQueryInstance())) {
bChangedOptions = (BOOL) DialogBoxParam( PlayerQueryResources(),
MAKEINTRESOURCE( PLAYER_DLG_OPTIONS ),
hwndParent? hwndParent: GetActiveWindow(),
lpDlgProc, (LPARAM) lpOptions );
FreeProcInstance( (FARPROC) lpDlgProc );
// Null hwndParent indicates that dlg was started by qtole message
// with no open movie. In this case tell QTOle.dll that dialog has
// been closed. Must do this even if options are not changed and
// must return the same pointer to lpOptions as input argument to
// this function. When qtole opens dialog for open movie, normal
// closing will updata options
if( !hwndParent )
QTOLE_ClosedOptionsDlg( PlayerQueryOleData(),
(LPQTOLE_OPTIONS) lpOptions, bChangedOptions );
}
else {
CommonTellUser( PlayerQueryResources(),
PLAYER_STRING_NOMEMORY, NULL, MB_OK );
}
return bChangedOptions;
}
// Function: GetOptionsDlgProc - Get options dialog proc
// --------------------------------------------------------------------
// Parameters: As required by Microsoft Windows
//
// Returns: As required by Microsoft Windows
// --------------------------------------------------------------------
BOOL __export CALLBACK GetOptionsDlgProc
( HWND hdlg, UINT message, WPARAM wParam, LPARAM lParam )
{
NPWORKOPTIONS pwoWorkOptions;
HLOCAL hmem;
BOOL bOptionsChanged;
BOOL bChecked;
LPQTOLE_OPTIONSMOVIE lpOptions;
switch( message ) {
case WM_INITDIALOG:
lpOptions = (LPQTOLE_OPTIONSMOVIE) lParam;
hmem = LocalAlloc( LHND, sizeof( WORKOPTIONS ));
pwoWorkOptions = (NPWORKOPTIONS) LocalLock( hmem );
pwoWorkOptions->hmem = hmem;
pwoWorkOptions->SaveOptions = *lpOptions;
pwoWorkOptions->lpOptions = lpOptions;
SetProp( hdlg, OPTIONSPROP, (HANDLE) pwoWorkOptions );
SetDlgForOptions( hdlg, pwoWorkOptions->lpOptions );
SetDlgItemText( hdlg, EDIT_OPTIONS_CAPTION,
pwoWorkOptions->lpOptions->szCaption );
return TRUE;
case WM_COMMAND:
switch( wParam ) {
case IDOK:
pwoWorkOptions = (NPWORKOPTIONS) GetProp( hdlg, OPTIONSPROP );
GetCurrentDlgSettings( hdlg, pwoWorkOptions->lpOptions );
bOptionsChanged
= (_fmemcmp( pwoWorkOptions->lpOptions,
&pwoWorkOptions->SaveOptions,
sizeof( QTOLE_OPTIONSMOVIE )) != 0 );
hmem = pwoWorkOptions->hmem;
LocalUnlock( hmem );
LocalFree( hmem );
RemoveProp( hdlg, OPTIONSPROP );
EndDialog( hdlg, bOptionsChanged );
return TRUE;
case IDCANCEL:
pwoWorkOptions = (NPWORKOPTIONS) GetProp( hdlg, OPTIONSPROP );
hmem = pwoWorkOptions->hmem;
LocalUnlock( hmem );
LocalFree( hmem );
RemoveProp( hdlg, OPTIONSPROP );
EndDialog( hdlg, FALSE );
return TRUE;
case EDIT_OPTIONS_SHOWMC:
bChecked = IsDlgButtonChecked( hdlg, EDIT_OPTIONS_SHOWMC );
EnableWindow( GetDlgItem( hdlg, EDIT_OPTIONS_CAPTION_TEXT ),
bChecked );
EnableWindow( GetDlgItem( hdlg, EDIT_OPTIONS_CAPTION ),
bChecked );
return TRUE;
case EDIT_OPTIONS_COPYICON:
bChecked = IsDlgButtonChecked( hdlg, EDIT_OPTIONS_COPYICON );
EnableWindow( GetDlgItem( hdlg,
EDIT_OPTIONS_SHOWTITLEBAR ), bChecked );
if( !bChecked )
CheckDlgButton( hdlg, EDIT_OPTIONS_SHOWTITLEBAR, TRUE );
return TRUE;
case EDIT_OPTIONS_SAVEASDEF:
pwoWorkOptions = (NPWORKOPTIONS) GetProp( hdlg, OPTIONSPROP );
GetCurrentDlgSettings( hdlg, pwoWorkOptions->lpOptions );
SaveOptionsAsDefault( pwoWorkOptions->lpOptions );
return TRUE;
case EDIT_OPTIONS_RESTRDEF:
pwoWorkOptions = (NPWORKOPTIONS) GetProp( hdlg, OPTIONSPROP );
PlayerGetDefaultOptions( pwoWorkOptions->lpOptions );
SetDlgForOptions( hdlg, pwoWorkOptions->lpOptions );
return FALSE;
default:
return FALSE;
}
return TRUE;
default:
return FALSE;
}
return FALSE;
}
// Function: QTOLEServerCallBack - Server callback used by qtole.dll to
// send commands to the server
// --------------------------------------------------------------------
// Parameters: UINT uMessage
// WPARAM wParam
// LPARAM lParam
// LPQTOLE_OPTIONSMOVIE lpOptions
//
//
// Returns: QTOLE_ERR QTOLE_OK if OK
// --------------------------------------------------------------------
QTOLE_ERR __export CALLBACK QTOLEServerCallBack
( UINT uMessage, WPARAM wParam, LPARAM lParam,
LPQTOLE_OPTIONSMOVIE lpOptions )
{
HWND hwndMovie;
NPMOVIEDATA pMovieData;
RECT rcMovie;
RECT rcClient;
RECT rcIntersect;
switch( uMessage ) {
case QTOLE_MSG_OPENOBJECT:
// Open a movie window
SendMessage( PlayerQueryFrameWindow(),