ExtEscape-Funktion (wingdi.h)
Mit der ExtEscape-Funktion kann eine Anwendung auf Gerätefunktionen zugreifen, die nicht über GDI verfügbar sind.
Syntax
int ExtEscape(
[in] HDC hdc,
[in] int iEscape,
[in] int cjInput,
[in] LPCSTR lpInData,
[in] int cjOutput,
[out] LPSTR lpOutData
);
Parameter
[in] hdc
Ein Handle für den Gerätekontext.
[in] iEscape
Die auszuführende Escapefunktion. Es kann sich um eine der folgenden Funktionen oder um eine anwendungsdefinierte Escapefunktion sein.
[in] cjInput
Die Anzahl der Bytes von Daten, auf die der lpszInData-Parameter verweist.
[in] lpInData
Ein Zeiger auf die Eingabestruktur, die für den angegebenen Escape-Wert erforderlich ist. Siehe auch Hinweise.
[in] cjOutput
Die Anzahl von Datenbytes, auf die der lpszOutData-Parameter verweist.
[out] lpOutData
Ein Zeiger auf die Struktur, die die Ausgabe von dieser Escape empfängt. Dieser Parameter darf nicht NULL sein, wenn ExtEscape als Abfragefunktion aufgerufen wird. Wenn in dieser Struktur keine Daten zurückgegeben werden sollen, legen Sie cbOutput auf 0 fest. Siehe auch Hinweise.
Rückgabewert
Der Rückgabewert gibt das Ergebnis der Funktion an. Es ist größer als 0, wenn die Funktion erfolgreich ist, mit Ausnahme des QUERYESCSUPPORT-Drucker-Escapes, der nur auf die Implementierung überprüft. Der Rückgabewert ist 0, wenn das Escapezeichen nicht implementiert ist. Ein Rückgabewert kleiner als 0 gibt einen Fehler an.
Hinweise
Verwenden Sie die Escape-Funktion , um einen der systemdefinierte Escapewerte an ein Gerät zu übergeben, es sei denn, der Escape ist einer der definierten Escapes in nEscape. ExtEscape funktioniert möglicherweise nicht ordnungsgemäß mit den systemdefinierten Escapezeichen. Insbesondere escapes, bei denen lpszInData ein Zeiger auf eine Struktur ist, die ein Element enthält, das ein Zeiger ist, schlagen fehl.
Beachten Sie, dass das in diesem Artikel beschriebene Verhalten das erwartete Verhalten ist, es aber beim Treiber liegt, dieses Modell zu erfüllen.
Die Variablen, auf die von lpszInData und lpszOutData verwiesen wird, sollten nicht identisch sein oder sich überschneiden. Wenn sich die Größenvariablen für Eingabe- und Ausgabepuffer überschneiden, enthalten sie möglicherweise nicht mehr die richtigen Werte, nachdem der Aufruf zurückgegeben wurde. Um die besten Ergebnisse zu erzielen, sollten lpszInData und lpszOutData auf verschiedene Variablen verweisen.
Die CHECKJPEGFORMAT-Drucker-Escapefunktion bestimmt, ob ein Drucker das Drucken eines JPEG-Bilds unterstützt.
Rufen Sie vor der Verwendung der CHECKJPEGFORMAT-Drucker-Escapefunktion die Escapefunktion des Druckers QUERYESCSUPPORT auf, um festzustellen, ob der Treiber CHECKJPEGFORMAT unterstützt. Beispielcode, der die Verwendung von CHECKJPEGFORMAT veranschaulicht, finden Sie unter Testen eines Druckers für JPEG- oder PNG-Unterstützung.
Die CHECKPNGFORMAT-Drucker-Escapefunktion bestimmt, ob ein Drucker das Drucken eines PNG-Bilds unterstützt.
Rufen Sie vor der Verwendung der CHECKJPEGFORMAT-Drucker-Escapefunktion die Escapefunktion des Druckers QUERYESCSUPPORT auf, um festzustellen, ob der Treiber CHECKJPEGFORMAT unterstützt. Beispielcode finden Sie unter Testen eines Druckers für JPEG- oder PNG-Unterstützung.
Der DRAWPATTERNRECT-Drucker escape erstellt ein weißes, graues oder einfarbiges schwarzes Rechteck, indem die Muster- und Regelfunktionen von Page Control Language (PCL) auf Hewlett-Packard LaserJet- oder LaserJet-kompatiblen Druckern verwendet werden. Eine Grauskala ist ein graues Muster, das eine bestimmte Mischung aus schwarzen und weißen Pixeln enthält.
Eine Anwendung sollte den QUERYESCSUPPORT-Escape verwenden, um zu bestimmen, ob der Drucker Muster und Regeln zeichnen kann, bevor sie die DRAWPATTERNRECT-Escape verwendet.
- Mit DRAWPATTERNRECT gezeichnete Regeln unterliegen keinen Ausschneidungsbereichen im Gerätekontext.
- Anwendungen sollten nicht versuchen, mit DRAWPATTERNRECT erstellte Muster und Regeln zu löschen, indem sie undurchsichtige Objekte darüber platzieren.
Wenn der Drucker Weiße Regeln unterstützt, können diese zum Löschen von Mustern verwendet werden, die von DRAWPATTERNRECT erstellt wurden. Wenn der Drucker keine weißen Regeln unterstützt, gibt es keine Methode zum Löschen dieser Muster.
Wenn eine Anwendung den DRAWPATTERNRECT-Escape nicht verwenden kann und das Gerät ein Drucker ist, sollte sie stattdessen die PatBlt-Funktion verwenden. Beachten Sie, dass die Anwendung den BLACKNESS-Rasteroperator verwenden sollte, wenn PatBlt zum Drucken eines schwarzen Rechtecks verwendet wird. Wenn es sich bei dem Gerät jedoch um einen Plotter handelt, sollte die Anwendung die Rectangle-Funktion verwenden.
Die GET_PS_FEATURESETTING Drucker-Escapefunktion ruft Informationen zu einer angegebenen Featureeinstellung für einen PostScript-Treiber ab.
Diese Escapefunktion wird nur unterstützt, wenn sich der PostScript-Treiber im postScript-zentrierten Modus oder im GDI-zentrierten Modus befindet. Um den PostScript-Treibermodus festzulegen, rufen Sie die POSTSCRIPT_IDENTIFY Escapefunktion auf.
Rufen Sie zum Ausführen dieses Vorgangs die ExtEscape-Funktion mit den folgenden Parametern auf.
Die GET_PS_FEATURESETTING Drucker-Escapefunktion ist gültig, wenn sie jederzeit nach dem Aufruf der CreateDC-Funktion und vor dem Aufrufen der DeleteDC-Funktion aufgerufen wird.
Die Escapefunktion des GETTECHNOLOGY-Druckers identifiziert den Typ des Druckertreibers.
Bei Nicht-XPSDrv-Druckern meldet diese Escape, ob es sich bei dem Treiber um einen Postscript-Treiber handelt.
Für XPSDrv-Drucker meldet diese Escape, ob der Treiber der Microsoft XPS Document Converter (MXDC) ist. Wenn dies der Grund ist, gibt der Escape die 0-0-beendete Zeichenfolge "http://schemas.microsoft.com/xps/2005/06"
Die PASSTHROUGH-Drucker-Escapefunktion sendet Daten direkt an einen Druckertreiber. Rufen Sie zum Ausführen dieses Vorgangs die ExtEscape-Funktion mit den folgenden Parametern auf.
Die PASSTHROUGH-Drucker-Escapefunktion wird von PostScript-Treibern im GDI-zentrierten Modus oder Im Kompatibilitätsmodus unterstützt, aber nicht im postScript-zentrierten Modus. Treiber im postScript-zentrierten Modus können die POSTSCRIPT_PASSTHROUGH Escapefunktion verwenden. Um einen PostScript-Treibermodus festzulegen, rufen Sie die POSTSCRIPT_IDENTIFY Escapefunktion auf.
Für PASSTHROUGH-Daten, die von EPSPRINTING- oder PostScript-zentrierten Anwendungen gesendet werden, nimmt der PostScript-Treiber keine Änderungen vor. Wenn der PostScript-Treiber für passthrough-Daten, die von anderen Anwendungen gesendet werden, das Ausgabeprotokoll BCP (Binary Communication Protocol) oder TBCP (Tagged Binary Communication Protocol) verwendet, führt der Treiber die entsprechenden BCP- oder TBCP-Zitate für Sonderzeichen durch, wie in "Adobe Serial and Parallel Communications Protocol Specification" beschrieben. Dies bedeutet, dass die Anwendung entweder ASCII- oder reine binäre PASSTHROUGH-Daten senden sollte.
Die POSTSCRIPT_DATA Drucker-Escapefunktion sendet Daten direkt an einen Druckertreiber. Rufen Sie zum Ausführen dieses Vorgangs die ExtEscape-Funktion mit den folgenden Parametern auf.
Die POSTSCRIPT_DATA Funktion ist identisch mit der PASSTHROUGH-Escapefunktion , mit der Ausnahme, dass sie nur von PostScript-Treibern im Kompatibilitätsmodus unterstützt wird. Sie wird von PostScript-Treibern im postScript-zentrierten Modus oder im GDI-zentrierten Modus nicht unterstützt.
Treiber im PostScript-zentrierten Modus können die escape-Funktion POSTSCRIPT_PASSTHROUGH verwenden, und Treiber im GDI-zentrierten Modus können die PASSTHROUGH-Escapefunktion verwenden. Um den Modus eines PostScript-Treibers festzulegen, rufen Sie die escape-Funktion POSTSCRIPT_IDENTIFY auf.
Die POSTSCRIPT_IDENTIFY Drucker escape-Funktion legt einen PostScript-Treiber auf GDI-zentrierten Modus oder PostScript-zentrierten Modus fest.
Um den Treiber in den GDI-zentrierten oder postScript-zentrierten Modus zu versetzen, rufen Sie zuerst die Escapefunktion des QUERYESCSUPPORT-Druckers auf, um zu ermitteln, ob der Treiber die POSTSCRIPT_IDENTIFY Drucker escape-Funktion unterstützt. Wenn ja, können Sie davon ausgehen, dass der Treiber PSCRIPT 5.0 ist. Bevor Sie dann eine andere Drucker escapefunktion aufrufen, müssen Sie POSTSCRIPT_IDENTIFY aufrufen und entweder PSIDENT_GDICENTRIC oder PSIDENT_PSCENTRIC angeben. Sie müssen die FUNKTIONEN QUERYESCSUPPORT und POSTSCRIPT_IDENTIFY Drucker escape aufrufen, bevor Sie eine andere Escapefunktion des Druckers aufrufen.
Für PostScript-Treiber, die die POSTSCRIPT_PASSTHROUGH, PASSTHROUGH und POSTSCRIPT_PASSTHROUGH die Escapefunktionen des Druckers identisch sind.
Im PostScript-zentrierten Modus ist die Anwendung für die gesamte PostScript-Ausgabe verantwortlich, die das Papier mit der escape-Funktion POSTSCRIPT_PASSTHROUGH markiert. GDI-Funktionen sind nicht zulässig. Der Treiber ist für die gesamte Dokumentstruktur und die Einstellungen für die Druckersteuerung verantwortlich. Die Anwendung kann die POSTSCRIPT_INJECTION Drucker escape-Funktion verwenden, um an bestimmten Stellen einen Block von Rohdaten (einschließlich DSC-Kommentaren) in den Auftragsdatenstrom einzufügen.
Die POSTSCRIPT_INJECTION Drucker escapefunktion fügt einen Block von Rohdaten an einem angegebenen Punkt in einen PostScript-Auftragsdatenstrom ein.
Ein PostScript-Treiber unterstützt diese Escapefunktion im GDI-zentrierten Modus oder im PostScript-zentrierten Modus, aber nicht im Kompatibilitätsmodus.
Um den Modus des PostScript-Treibers festzulegen, rufen Sie die POSTSCRIPT_IDENTIFY Escapefunktion auf.
Um diesen Vorgang auszuführen, rufen Sie die ExtEscape-Funktion mit den folgenden Parametern auf.
Der Treiber speichert die Einschleusungsdaten intern zwischen und gibt sie an den entsprechenden Punkten in der Ausgabe aus. Die zwischengespeicherten Informationen werden geleert, wenn sie nicht mehr benötigt werden. Spätestens nach dem EndDoc-Aufruf wird er geleert.
Im GDI-zentrierten Modus kann die Anwendung gültige DSC-Blockdaten nur mithilfe der POSTSCRIPT_INJECTION Drucker escape-Funktion einfügen. Ein gültiger DSC-Block muss alle folgenden Bedingungen erfüllen:
- Es besteht aus einer integralen Sequenz von "Linien".
- Jede "Zeile" muss mit "%%" beginnen.
- Jede "Zeile" mit Ausnahme der letzten Zeile muss mit <CR>, <LF> oder <CR><LF> enden, mit Ausnahme der letzten Zeile. Wenn die letzte Zeile nicht mit <CR>, <LF> oder <CR><LF> endet, fügt der Treiber CR><LF> nach dem letzten Byte der Einspritzdaten an<.
- Jede "Zeile" muss 255 Byte oder weniger umfassen, einschließlich "%%", ohne die <CR>/<LF-Zeilenbeendigung> zu zählen.
Ein PostScript-Treiber unterstützt diese Escapefunktion im postScript-zentrierten Modus oder im Kompatibilitätsmodus, aber nicht im GDI-zentrierten Modus.
Um den Modus des PostScript-Treibers festzulegen, rufen Sie die POSTSCRIPT_IDENTIFY Escapefunktion auf.
Die Escapefunktion DES QUERYESCSUPPORT-Druckers überprüft die Implementierung einer Drucker escapefunktion.
Die SPCLPASSTHROUGH2 Drucker escape-Funktion ermöglicht Anwendungen, die mithilfe von EPSPRINTING auf PostScript-Geräten drucken, private PostScript-Prozeduren und andere Ressourcen auf Dokumentebene einzuschließen.
Diese Escape wird nur aus Gründen der Abwärtskompatibilität mit Adobe Acrobat unterstützt. Andere Anwendungen sollten dieses veraltete Escapezeichen nicht verwenden.
Die Anwendung muss dieses Escapezeichen vor dem Aufrufen von StartDoc aufrufen, damit der Treiber die Daten zum Einfügen an der richtigen Stelle im PostScript-Stream zwischenspeichert. Wenn dieses Escapezeichen unterstützt wird, lässt der Treiber auch Escape-DOWNLOADFACE-Aufrufe vor StartDoc zu. Der Treiber speichert die einzufügenden Daten und die daten, die für alle ESCAPE-DOWNLOADFACE-Aufrufe vor StartDoc erforderlich sind, intern zwischen und gibt sie alle unmittelbar vor %%EndProlog aus. Die Sequenz von SPCLPASSTHROUGH2 - und DOWNLOADFACE-Aufrufen wird in der Reihenfolge beibehalten, in der ihre Daten übergeben werden, d. h. ein späterer Aufruf führt zu einer Datenausgabe nach den Daten eines früheren Aufrufs. Der Treiber betrachtet Schriftarten, die von pre-StartDoc heruntergeladen wurden , escape DOWNLOADFACE-Aufrufe als nicht verfügbar für die Entfernung während des Auftragsbereichs.
Diese Escape wird vom Betriebssystem nicht in EMF-Dateien aufgezeichnet, daher müssen Anwendungen sicherstellen, dass die EMF-Aufzeichnung für die Aufträge, die das Escapezeichen verwenden, deaktiviert wird.
Beispiele
Ein Beispiel finden Sie unter Größenanpassung eines JPEG- oder PNG-Bilds.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | wingdi.h (windows.h einschließen) |
Bibliothek | Gdi32.lib |
DLL | Gdi32.dll |