[comp.sys.mac.programmer] Help! How to Print??

cpyang@ccnysci.UUCP (Chao Ping Yang) (11/16/88)

I have posted below the segment of MPW C codes to do printing
in my program.  For small objects, it prints fine, but when
the object gets bigger, I get the system error, which sometimes
is Resource not found.

Can someone tell me if I had done something wrong here?

Thanks in advance.

==Chaoping

------------------------------- Cut here ---------------------
#include	<types.h>
#include	<stdio.h>
#include	<quickdraw.h>
#include	<windows.h>
#include	<Memory.h>
#include	<PrintTraps.h>
#include	<textedit.h>

	static	THPrint		myPrRecHdl;
	static	GrafPtr		savePort;

myInit() /* this is called when the program first starts */
{
	/* other initializations ... */
	
	PrOpen();
	myPrRecHdl = (THPrint) NewHandle(sizeof(TPrint));
	PrValidate(myPrRecHdl);	/* now it is a valid print record handle */
	PrClose();
	
}

           /* if str == "Setup", then do page setup, else print the picture */
do_printing(str) 
	char	*str;
{
	int			error = noErr;
	TPPrPort	myPrPort;
	TPrStatus	myPrStatus;


	GetPort(&savePort);
	
	PrOpen();		/* open printing manager */

	if( *str == 'S' ) 	/* page setup */
		PrStlDialog(myPrRecHdl);
	else if( PrJobDialog(myPrRecHdl) ) {
	
		myPrPort = PrOpenDoc(myPrRecHdl,nil,nil);	
		if( (error = PrError()) == noErr ) {
			PrOpenPage(myPrPort,nil);
				if( (error=PrError()) == noErr ) { 
					myQuickDrawCalls();  
    				  /* the same calls that draw on the screen */
				}
			PrClosePage(myPrPort);
		}
		PrCloseDoc(myPrPort);
		
		/* release code segments */
		/* doing these or not has no effect on the result */
		release_main();	
		release_interface();
		release_series();
		
		if( (*myPrRecHdl)->prJob.bJDocLoop == bSpoolLoop 
			&& (error = PrError()) == noErr ) {
			PrPicFile(myPrRecHdl,nil,nil,nil,&myPrStatus);
		}
	}
	PrClose();
	SetPort(savePort);
	
	return(error);
}