Wenn Sie diesen Event erhalten, müssen Sie einen Thread erzeugen und die Start-Parameter an diesen übergeben.
Dieser Thread erzeugt einen neuen List & Label-Job, und führt in diesem neuen Job im Wesentlichen Ihre "ganz normale" Druckschleife aus. Abweichend zu Ihrer normalen Druckschleife müssen Sie lediglich noch folgende Änderungen durchführen:
•Setzen Sie vor dem Druckstart die Option LL_OPTIONSTR_ORIGINALPROJECTFILENAME auf den Pfad, der in der Struktur mitgeliefert wurde.
•Setzen Sie nach dem Druckstart über LlPrintSetOption(hJob, LL_PRNOPT_LASTPAGE, _nPages) die Anzahl der maximal zu druckenden Seiten, die in der Callback-Struktur übergeben wurde.
•Überprüfen Sie nach jedem LlPrint(), ob die Seitenzahl überschritten wurde, und rufen Sie in diesem Fall LlPrintAbort() auf. Diese Optimierung kann bzw. sollte auch für den normalen Druck benutzt werden. In diesem Fall sollten Sie aber nicht abbrechen, sondern den Druck regulär über LlPrintFieldsEnd() beenden.
•Signalisieren Sie über den in der Callback-Struktur mitgelieferten Event _hEvent an List & Label den Threadzustand, einmal zu Beginn und einmal am Ende des Threads. Wichtig ist, dass dies so synchronisiert ist, dass darauffolgende QUEST_JOBSTATE-Aufrufe (s. u.) den entsprechenden Zustand RUNNING/STOPPED korrekt melden. Da Sie den Event aus dem Thread heraus aufrufen, können Sie nicht den Thread-Zustand verwenden, sondern müssen eine entsprechende Variable verwenden. Dieser Prozesszustand muss für jeden Thread getrennt verwaltet werden.
•Löschen Sie die übergebene Projektdatei nach dem Druck
Zusätzlich sind noch folgende Punkte zu beachten:
Vorschau
•Übergeben Sie vor dem Aufruf von LlPrint(WithBox)Start das Fensterhandle, das über die Callback-Struktur übergeben wurde per LlAssociatePreviewControl(hJob, hWnd, 1) an List & Label, so dass der Druckjob darüber informiert wird, wo er die Daten darstellen soll.
•Nach dem Ende des Drucks, also nach LlPrintEnd() rufen Sie LlAssociatePreviewControl(hJob,NULL,1) auf, damit das Vorschau-Control die Kontrolle über die Vorschaudatei erhält. Falls der Druck fehlgeschlagen ist, muss der letzte Parameter 0 sein, damit das Preview-Control leer ist und nicht das letzte Projekt anzeigt.
Export
•Benutzen Sie LlPrintWithBoxStart(), damit eine Fortschrittsbox dargestellt wird. Als Parent-Fensterhandle benutzen Sie hier ebenfalls das über die Callback-Struktur übergebene Fensterhandle.
•Wenn der _pszExportFormat-Member der Struktur gesetzt ist, hat der Anwender im Menü des Ribbons einen Direktexport gewählt. In diesem Falle sollte Ihr Code per LlPrintSetOptionString(hJob, LL_PRNOPTSTR_EXPORT, _pszExportFormat); das gewünschte Format vorselektieren und keinen Druckoptionsdialog (LlPrintOptionsDialog()) anzeigen, wenn _ bWithoutDialog auf TRUE steht.