Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
Relevant replacement documents include:
Completed Lab/SetupController.c
// Play Movie with Controller Sample |
// Based on QTShell |
// WWDC 2000 |
#include "ComApplication.h" |
#include "ComFramework.h" |
#include "MacFramework.h" |
extern Rect gMCResizeBounds; // maximum size for any movie window |
////////// |
// |
// CreateController |
// Create and configure the movie controller. |
// |
////////// |
MovieController CreateController (Movie theMovie, WindowReference theWindow, Boolean theMoveWindow) |
{ |
#if TARGET_OS_WIN32 |
#pragma unused(theMoveWindow) |
#endif |
MovieController myMC = NULL; |
Rect myRect; |
WindowObject myWindowObject = NULL; |
GrafPtr mySavedPort; |
if ((theMovie == NULL) || (theWindow == NULL)) |
return(NULL); |
// get our window specific data |
myWindowObject = QTFrame_GetWindowObjectFromWindow(theWindow); |
if (myWindowObject == NULL) |
return(NULL); |
GetPort(&mySavedPort); |
MacSetPort(QTFrame_GetPortFromWindowReference(theWindow)); |
// resize the movie bounding rect and offset to 0,0 |
GetMovieBox(theMovie, &myRect); |
MacOffsetRect(&myRect, -myRect.left, -myRect.top); |
SetMovieBox(theMovie, &myRect); |
AlignWindow(QTFrame_GetWindowFromWindowReference(theWindow), false, &myRect, NULL); |
// create the movie controller |
myMC = NewMovieController(theMovie, &myRect, mcTopLeftMovie); |
if (myMC == NULL) |
return(NULL); |
// enable the default movie controller editing |
MCEnableEditing(myMC, true); |
// suppress movie badge |
MCDoAction(myMC, mcActionSetUseBadge, (void *)false); |
// set the initial looping state of the movie |
QTUtils_SetLoopingStateFromFile(theMovie, myMC); |
// install an action filter that does any application-specific movie controller action processing |
MCSetActionFilterWithRefCon(myMC, NewMCActionFilterWithRefConUPP(myMCActionFilterProc), (long)myWindowObject); |
// add grow box for the movie controller |
if ((**myWindowObject).fCanResizeWindow) { |
#if TARGET_OS_WIN32 |
RECT myRect; |
GetWindowRect(GetDesktopWindow(), &myRect); |
OffsetRect(&myRect, -myRect.left, -myRect.top); |
QTFrame_ConvertWinToMacRect(&myRect, &gMCResizeBounds); |
#endif |
#if TARGET_OS_MAC |
GetRegionBounds(GetGrayRgn(), &gMCResizeBounds); |
#endif |
MCDoAction(myMC, mcActionSetGrowBoxBounds, &gMCResizeBounds); |
} |
#if TARGET_OS_MAC |
if (theMoveWindow) |
MoveWindow(theWindow, kDefaultWindowX, kDefaultWindowY, false); |
#endif |
MacSetPort(mySavedPort); |
// add any application-specific controller functionality |
SetupController(myMC); |
return(myMC); |
} |
////////// |
// |
// SetupController |
// Configure the movie controller. |
// |
////////// |
void SetupController (MovieController theMC) |
{ |
long myControllerFlags; |
// CLUT table use |
MCDoAction(theMC, mcActionGetFlags, &myControllerFlags); |
MCDoAction(theMC, mcActionSetFlags, (void *)(myControllerFlags | mcFlagsUseWindowPalette)); |
// enable keyboard event handling |
MCDoAction(theMC, mcActionSetKeysEnabled, (void *)true); |
// disable drag support |
MCDoAction(theMC, mcActionSetDragEnabled, (void *)false); |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14