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.

Wert Bedeutung
CHECKJPEGFORMAT
Überprüft, ob der Drucker ein JPEG-Bild unterstützt.
CHECKPNGFORMAT
Überprüft, ob der Drucker ein PNG-Bild unterstützt.
DRAWPATTERNRECT
Zeichnet ein weißes, graues oder schwarzes Rechteck.
GET_PS_FEATURESETTING
Ruft Informationen zu einer angegebenen Featureeinstellung für einen PostScript-Treiber ab.
GETTECHNOLOGY
Gibt an, ob der Treiber ein Postscript-Treiber ist oder nicht.
PASSTHROUGH
Ermöglicht der Anwendung, Daten direkt an einen Drucker zu senden. Unterstützt im Kompatibilitätsmodus und GDI-zentrierten Modus.
POSTSCRIPT_DATA
Ermöglicht der Anwendung, Daten direkt an einen Drucker zu senden. Wird nur im Kompatibilitätsmodus unterstützt.
POSTSCRIPT_IDENTIFY
Legt einen PostScript-Treiber auf den GDI- oder PostScript-zentrierten Modus fest.
POSTSCRIPT_INJECTION
Fügt einen Block von Rohdaten in einen PostScript-Auftragsstream ein.
POSTSCRIPT_PASSTHROUGH
Sendet Daten direkt an einen PostScript-Druckertreiber. Unterstützt im Kompatibilitätsmodus und postScript-zentrierten Modus.
QUERYESCSUPPORT
Bestimmt, ob eine bestimmte Escape vom Gerätetreiber implementiert wird.
SPCLPASSTHROUGH2
Ermöglicht Es Anwendungen, private Prozeduren und andere Ressourcen im Kontext zum Speichern von Dokumenten einzuschließen.

[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

Hinweis Dies ist eine blockierende oder synchrone Funktion und wird möglicherweise nicht sofort zurückgegeben. Wie schnell diese Funktion zurückgibt, hängt von Laufzeitfaktoren wie Netzwerk-status, Druckserverkonfiguration und Druckertreiberimplementierung ab – Faktoren, die beim Schreiben einer Anwendung schwer vorherzusagen sind. Wenn Sie diese Funktion über einen Thread aufrufen, der die Interaktion mit der Benutzeroberfläche verwaltet, kann die Anwendung nicht reagieren.
 
Verwenden Sie diese Funktion, um einen vom Treiber definierten Escapewert an ein Gerät zu übergeben.

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.

Hinweis Nachdem der PostScript-Treiber auf den GDI-zentrierten Modus oder postScript-zentrierten Modus festgelegt wurde, können Sie die POSTSCRIPT_IDENTIFY Drucker escape-Funktion nicht mehr aufrufen.
 
Wenn Sie die POSTSCRIPT_IDENTIFY Drucker escape-Funktion nicht verwenden, befindet sich der PostScript-Treiber im Kompatibilitätsmodus und bietet identische Unterstützung für die Funktionen PASSTHROUGH, POSTSCRIPT_PASSTHROUGH und POSTSCRIPT_DATA Drucker escape.

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.
Die POSTSCRIPT_PASSTHROUGH Drucker escape-Funktion sendet Daten direkt an einen PostScript-Druckertreiber.

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

Weitere Informationen

ESC

GetDeviceCaps

Druckspooler-API-Funktionen

Drucken