Liten Datorhandbok För Målmedvetna

Academic Computer Club, Umeå Universitet, 2000


Macintosh Programmering

Utskrifter
När användaren väljer "Utskriftsformat..." från arkiv-menyn skall du ta upp dialogrutan för utskriftsformat. Det görs med följande kod:

void pageSetup(void) { PrOpen(); if (hPrint==0L) { hPrint = (THPrint)NewHandle(sizeof(TPrint)); if (handleErr((Handle)hPrint,true)) return; PrintDefault(hPrint); } PrStlDialog(hPrint); PrClose(); }

hPrint är här en global variabel av typen THPrint som initialiserats till 0L.

När användaren väljer "Skriv ut..." så ska du skriva ut dokumentet. Det första du behöver göra att starta skrivarens drivrutin. Det görs med kommandot:

PrOpen();

Sedan måste du kontrollera att inställningarna i utskriftsformats-dialogrutan är korrekt gjorda, vilket görs med följande kod:

if (hPrint==0L) { hPrint = (THPrint)NewHandle(sizeof(TPrint)); if (handleErr((Handle)hPrint,true)) return false; PrintDefault(hPrint); } PrValidate(hPrint);

Sedan tar du fram själva utskrifts-dialogrutan med anropet:

print = PrJobDialog(hPrint);

Om denna funktion returerar true betyder det att du skall fortsätta med utskriften, om false returneras så avbröt användaren utskriften. Du börjar med att ta reda på vilken GrafPort du skall använda för utskriften. Det görs med kommandot:

printPort = PrOpenDoc(hPrint, 0L, 0L); SetPort(&printPort->gPort);

För varje ny sida i dokumentet ger du sedan kommandot:

PrOpenPage(printPort, 0L);

Sedan ritar du sidan, precis som när du ritar till en vanlig GrafPort som representerar ett fönster på skärmen. När du är klar med en sida ger du kommandot:

PrClosePage(printPort);

Följt av ett anrop till PrOpenPage för att få fram nästa sida. När du har tagit dig igenom alla sidor i dokumentet på detta sätt, avslutar du utskriften med kommandot:

PrCloseDoc(printPort);

Sedan måste du kontrollera om filen lagrades på hårddisken i stället för att skickas direkt till skrivaren. Om den gjorde det, måste du säga åt datorn att skriva ut den lagrade filen. Det görs med kommandot:

if ((**hPrint).prJob.bJDocLoop == bSpoolLoop && PrError() == noErr) PrPicFile(hPrint, nil, nil, nil, &prStatus);

Sedan bör du kontrollera om du skall skriva ut några fler kopior av dokumentet, det görs till exempel med raderna:

(*hPrint)->prJob.iCopies--; if ((*hPrint)->prJob.iCopies>0) // Skriv ut en kopia till av dokumentet;

För att skriva ut en kopia till börjar du om från början med att anropa PrOpenDoc, och så vidare. När du skrivit ut alla kopior måste du stänga skrivarens drivrutin med kommandot:

PrClose();

Författat av Niklas Frykholm


Bakåt , Framåt , Upp, Huvudsida
Denna sida ändrades sist av handbok den 08/05 1996 18:10:11.
Last modified Wednesday, 08-May-1996 18:10:11 CEST