29.11.2012 Aufrufe

combit List & Label - Programmierer-Referenz - combit GmbH

combit List & Label - Programmierer-Referenz - combit GmbH

combit List & Label - Programmierer-Referenz - combit GmbH

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

6.3. Aufgaben<br />

Nun zu den einzelnen Aufgaben, die Ihnen durch den Callback gestellt werden.<br />

6.3.1. Start<br />

Aufgaben<br />

Wenn Sie einen START-Event erhalten, müssen Sie einen Thread erzeugen und die Start-<br />

Parameter an diesen übergeben.<br />

Wenn Sie diese Parameter übergeben, sorgen Sie bitte dafür, dass der Thread sie ausgewertet<br />

oder kopiert hat, bevor Sie aus dem START-Event wieder die Kontrolle an <strong>List</strong><br />

& <strong>Label</strong> übergeben, da danach die Struktur nicht mehr gültig ist - dies gilt für alle Callbacks!<br />

Dieser Thread erzeugt einen neuen <strong>List</strong> & <strong>Label</strong>-Job, und führt in diesem neuen Job im<br />

Wesentlichen Ihre "ganz normale" Druckschleife aus. Abweichend zu Ihrer normalen<br />

Druckschleife müssen Sie lediglich noch folgende Änderungen durchführen:<br />

• Setzen Sie vor dem Druckstart die Option<br />

LL_OPTIONSTR_ORIGINALPROJECTFILENAME auf den Pfad, der in der Struktur<br />

mitgeliefert wurde.<br />

• Setzen Sie nach dem Druckstart über LlPrintSetOpti-<br />

•<br />

on(hJob,LL_PRNOPT_LASTPAGE,_nPages) die Anzahl der maximal zu druckenden<br />

Seiten, die in der Callback-Struktur übergeben wurde.<br />

Überprüfen Sie nach jedem LlPrint, ob die Seitenzahl überschritten wurde, und<br />

rufen Sie in diesem Fall LlPrintAbort auf. Diese Optimierung kann bzw. sollte<br />

auch für den normalen Druck benutzt werden. In diesem Fall sollten Sie aber<br />

nicht abbrechen, sondern den Druck regulär über LlPrintFieldsEnd beenden.<br />

• Signalisieren Sie über den in der Callback-Struktur mitgelieferten Event _hEvent<br />

an <strong>List</strong> & <strong>Label</strong> den Threadzustand, einmal zu Beginn und einmal am Ende des<br />

Threads. Wichtig ist, dass dies so synchronisiert ist, dass darauffolgende<br />

QUEST_JOBSTATE-Aufrufe (s.u.) den entsprechenden Zustand<br />

•<br />

RUNNING/STOPPED korrekt melden. Da Sie den Event aus dem Thread heraus<br />

aufrufen, können Sie nicht den Thread-Zustand verwenden, sondern müssen<br />

eine entsprechende Variable verwenden. Dieser Prozesszustand muss für jeden<br />

Thread getrennt verwaltet werden.<br />

Löschen Sie die übergebene Projektdatei nach dem Druck<br />

Zusätzlich sind noch folgende Punkte zu beachten:<br />

Vorschau<br />

• Übergeben Sie vor dem Aufruf von LlPrint(WithBox)Start das Fensterhandle, das<br />

über die Callback-Struktur übergeben wurde per LlAssociatePreview-<br />

•<br />

Control(hJob,hWnd,1) an <strong>List</strong> & <strong>Label</strong>, so dass der Druckjob darüber informiert<br />

wird, wo er die Daten darstellen soll.<br />

Nach dem Ende des Drucks, also nach LlPrintEnd rufen Sie LlAssociatePreviewControl(hJob,NULL,1)<br />

auf, damit das Vorschau-Control die Kontrolle über<br />

die Vorschaudatei erhält. Falls der Druck fehlgeschlagen ist, muss der letzte Pa-<br />

77

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!