Funzione ExtEscape (wingdi.h)

La funzione ExtEscape consente a un'applicazione di accedere alle funzionalità del dispositivo non disponibili tramite GDI.

Sintassi

int ExtEscape(
  [in]  HDC    hdc,
  [in]  int    iEscape,
  [in]  int    cjInput,
  [in]  LPCSTR lpInData,
  [in]  int    cjOutput,
  [out] LPSTR  lpOutData
);

Parametri

[in] hdc

Handle nel contesto del dispositivo.

[in] iEscape

Funzione di escape da eseguire. Può essere una delle seguenti oppure può essere una funzione di escape definita dall'applicazione.

Valore Significato
CHECKJPEGFORMAT
Verifica se la stampante supporta un'immagine JPEG.
CHECKPNGFORMAT
Verifica se la stampante supporta un'immagine PNG.
DRAWPATTERNRECT
Disegna un rettangolo bianco, grigio o nero.
GET_PS_FEATURESETTING
Ottiene informazioni su un'impostazione di funzionalità specificata per un driver PostScript.
GETTECHNOLOGY
Segnala se il driver è un driver Postscript.
PASSTHROUGH
Consente all'applicazione di inviare dati direttamente a una stampante. Supportato in modalità di compatibilità e modalità incentrata su GDI.
POSTSCRIPT_DATA
Consente all'applicazione di inviare dati direttamente a una stampante. Supportato solo in modalità di compatibilità.
POSTSCRIPT_IDENTIFY
Imposta un driver PostScript su modalità basata su GDI o incentrato su PostScript.
POSTSCRIPT_INJECTION
Inserisce un blocco di dati non elaborati in un flusso di processi PostScript.
POSTSCRIPT_PASSTHROUGH
Invia i dati direttamente a un driver di stampante PostScript. Supportato in modalità di compatibilità e modalità incentrata su PostScript.
QUERYESCSUPPORT
Determina se un determinato escape viene implementato dal driver del dispositivo.
SPCLPASSTHROUGH2
Consente alle applicazioni di includere procedure private e altre risorse nel contesto di salvataggio a livello di documento.

[in] cjInput

Numero di byte di dati a cui punta il parametro lpszInData .

[in] lpInData

Puntatore alla struttura di input necessaria per l'escape specificato. Vedere anche la sezione Note.

[in] cjOutput

Numero di byte di dati a cui punta il parametro lpszOutData .

[out] lpOutData

Puntatore alla struttura che riceve l'output da questo escape. Questo parametro non deve essere NULL se ExtEscape viene chiamato come funzione di query. Se non vengono restituiti dati in questa struttura, impostare cbOutput su 0. Vedere anche la sezione Note.

Valore restituito

Il valore restituito specifica il risultato della funzione. È maggiore di zero se la funzione ha esito positivo, ad eccezione dell'escape della stampante QUERYESCSUPPORT, che verifica solo l'implementazione. Il valore restituito è zero se l'escape non viene implementato. Un valore restituito minore di zero indica un errore.

Commenti

Nota Si tratta di una funzione di blocco o sincrona e potrebbe non restituire immediatamente. La velocità con cui questa funzione restituisce dipende da fattori di runtime, ad esempio lo stato di rete, la configurazione del server di stampa e l'implementazione del driver della stampante, fattori difficili da prevedere durante la scrittura di un'applicazione. La chiamata a questa funzione da un thread che gestisce l'interazione con l'interfaccia utente potrebbe rendere l'applicazione non rispondente.
 
Usare questa funzione per passare un valore di escape definito dal driver a un dispositivo.

Utilizzare la funzione Escape per passare uno dei valori di escape definiti dal sistema a un dispositivo, a meno che l'escape non sia uno degli escape definiti in nEscape. ExtEscape potrebbe non funzionare correttamente con i escape definiti dal sistema. In particolare, gli escape in cui lpszInData è un puntatore a una struttura che contiene un membro che è un puntatore avrà esito negativo.

Si noti che il comportamento descritto in questo articolo è il comportamento previsto, ma è necessario che il driver sia conforme a questo modello.

Le variabili a cui fa riferimento lpszInData e lpszOutData non devono corrispondere o sovrapporsi. Se l'input e le variabili di dimensioni del buffer di output si sovrappongono, potrebbero non contenere i valori corretti dopo la chiamata. Per i risultati migliori, lpszInData e lpszOutData devono fare riferimento a variabili diverse.

La funzione di escape della stampante CHECKJPEGFORMAT determina se una stampante supporta la stampa di un'immagine JPEG.

Prima di usare la funzione di escape della stampante CHECKJPEGFORMAT , chiamare la funzione di escape della stampante QUERYESCSUPPORT per determinare se il driver supporta CHECKJPEGFORMAT. Per codice di esempio che illustra l'uso di CHECKJPEGFORMAT, vedere Test di una stampante per il supporto JPEG o PNG.

La funzione di escape della stampante CHECKPNGFORMAT determina se una stampante supporta la stampa di un'immagine PNG.

Prima di usare la funzione di escape della stampante CHECKJPEGFORMAT , chiamare la funzione di escape della stampante QUERYESCSUPPORT per determinare se il driver supporta CHECKJPEGFORMAT. Per codice di esempio, vedere Test di una stampante per il supporto JPEG o PNG.

L'escape della stampante DRAWPATTERNRECT crea un rettangolo nero bianco, grigio o nero solido usando le funzionalità del modello e delle regole di Page Control Language (PCL) in Hewlett-Packard stampanti compatibili con LaserJet o LaserJet. Una scala di grigio è un modello grigio che contiene una combinazione specifica di pixel neri e bianchi.

Un'applicazione deve usare l'escape QUERYESCSUPPORT per determinare se la stampante è in grado di creare modelli e regole prima di usare l'escape DRAWPATTERNRECT .

  • Le regole disegnate con DRAWPATTERNRECT non sono soggetti alle aree di ritaglio nel contesto del dispositivo.
  • Le applicazioni non devono provare a cancellare modelli e regole create con DRAWPATTERNRECT inserendo oggetti opachi su di essi.

Se la stampante supporta le regole bianche, queste possono essere usate per cancellare i modelli creati da DRAWPATTERNRECT. Se la stampante non supporta le regole bianche, non esiste alcun metodo per cancellare questi modelli.

Se un'applicazione non può usare l'escape DRAWPATTERNRECT e il dispositivo è una stampante, in genere deve usare la funzione PatBlt . Si noti che se PatBlt viene usato per stampare un rettangolo nero, l'applicazione deve usare l'operatore raster BLACKNESS. Se il dispositivo è un plotter, tuttavia, l'applicazione deve usare la funzione Rettangolo .

La funzione di escape della stampante GET_PS_FEATURESETTING recupera informazioni su un'impostazione di funzionalità specificata per un driver PostScript.

Questa funzione di escape è supportata solo se il driver PostScript è in modalità basata su PostScript o in modalità basata su GDI. Per impostare la modalità driver PostScript, chiamare la funzione di escape POSTSCRIPT_IDENTIFY .

Per eseguire questa operazione, chiamare la funzione ExtEscape con i parametri seguenti.

La funzione di escape della stampante GET_PS_FEATURESETTING è valida se chiamata qualsiasi volta dopo aver chiamato la funzione CreateDC e prima di chiamare la funzione DeleteDC .

La funzione di escape della stampante GETTECHNOLOGY identifica il tipo di driver della stampante.

Per le stampanti non XPSDrv, questo escape segnala se il driver è un driver Postscript.

Per le stampanti XPSDrv, questo escape segnala se il driver è Microsoft XPS Document Converter (MXDC). In caso affermativo, l'escape restituisce la stringa con terminazione zero "http://schemas.microsoft.com/xps/2005/06"

La funzione di escape della stampante PASS THROUGH invia i dati direttamente a un driver della stampante. Per eseguire questa operazione, chiamare la funzione ExtEscape con i parametri seguenti.

La funzione di escape della stampante PASSTHROUGH è supportata dai driver PostScript in modalità incentrata su GDI o sulla modalità di compatibilità, ma non in modalità postScript-centric. I driver in modalità incentrata su PostScript possono usare la funzione di escape POSTSCRIPT_PASSTHROUGH . Per impostare una modalità driver PostScript, chiamare la funzione di escape POSTSCRIPT_IDENTIFY .

Per i dati PASS THROUGH inviati da applicazioni incentrate su EPSPRINTING o PostScript, il driver PostScript non apporta modifiche. Per i dati PASSTHROUGH inviati da altre applicazioni, se il driver PostScript usa il protocollo di output BCP (Binary Communication Protocol) o TBCP (Tagged Binary Communication Protocol), il driver esegue la citazione BCP o TBCP appropriata per i caratteri speciali, come descritto in "Specifica dei protocolli di comunicazione seriale e parallela". Ciò significa che l'applicazione deve inviare dati PASSTHROUGH ASCII o pure binari.

La funzione di escape della stampante POSTSCRIPT_DATA invia i dati direttamente a un driver della stampante. Per eseguire questa operazione, chiamare la funzione ExtEscape con i parametri seguenti.

La funzione POSTSCRIPT_DATA è identica alla funzione di escape PASS THROUGH , ad eccezione del fatto che è supportata solo dai driver PostScript in modalità di compatibilità. Non è supportato dai driver PostScript in modalità incentrata su PostScript o in modalità basata su GDI.

I driver in modalità basata su PostScript possono usare la funzione di escape POSTSCRIPT_PASSTHROUGH e i driver in modalità basata su GDI possono usare la funzione di escape PASSTHROUGH . Per impostare la modalità di un driver PostScript, chiamare la funzione di escape POSTSCRIPT_IDENTIFY .

La funzione di escape della stampante POSTSCRIPT_IDENTIFY imposta un driver PostScript sulla modalità basata su GDI o sulla modalità incentrata su PostScript.

Per inserire il driver in modalità basata su GDI o incentrato su PostScript, chiamare prima di tutto la funzione di escape della stampante QUERYESCSUPPORT per determinare se il driver supporta la funzione di escape della stampante POSTSCRIPT_IDENTIFY. In tal caso, è possibile presupporre che il driver sia PSCRIPT 5.0. Quindi, prima di chiamare qualsiasi altra funzione di escape della stampante, è necessario chiamare POSTSCRIPT_IDENTIFY e specificare PSIDENT_GDICENTRIC o PSIDENT_PSCENTRIC. È necessario chiamare le funzioni queryESCSUPPORT e POSTSCRIPT_IDENTIFY di escape della stampante prima di chiamare qualsiasi altra funzione di escape della stampante.

Nota Dopo che il driver PostScript è impostato sulla modalità basata su GDI o sulla modalità incentrata su PostScript, non sarà più possibile chiamare la funzione di escape della stampante POSTSCRIPT_IDENTIFY.
 
Se non si usa la funzione di escape della stampante POSTSCRIPT_IDENTIFY, il driver PostScript è in modalità di compatibilità e fornisce supporto identico per le funzioni passTHROUGH, POSTSCRIPT_PASSTHROUGH e POSTSCRIPT_DATA di escape della stampante.

Per i driver PostScript che supportano le funzioni di escape POSTSCRIPT_PASSTHROUGH, PASSTHROUGH e POSTSCRIPT_PASSTHROUGH stampante sono identiche.

In modalità incentrata su PostScript, l'applicazione è responsabile di tutti gli output PostScript che contrassegna il documento usando la funzione di escape POSTSCRIPT_PASSTHROUGH . Le funzioni GDI non sono consentite. Il driver è responsabile delle impostazioni generali della struttura del documento e del controllo stampante. L'applicazione può usare la funzione di escape della stampante POSTSCRIPT_INJECTION per inserire un blocco di dati non elaborati (inclusi i commenti DSC) nel flusso di processo in posizioni specifiche.

La funzione di escape della stampante POSTSCRIPT_INJECTION inserisce un blocco di dati non elaborati in un punto specificato in un flusso di processo PostScript.

Un driver PostScript supporta questa funzione di escape in modalità basata su GDI o in modalità incentrata su PostScript, ma non in modalità di compatibilità.

Per impostare la modalità del driver PostScript, chiamare la funzione di escape POSTSCRIPT_IDENTIFY .

Per eseguire questa operazione, chiamare la funzione ExtEscape con i parametri seguenti.

Il driver memorizza internamente nella cache i dati di inserimento e lo genera nei punti appropriati nell'output. Le informazioni memorizzate nella cache vengono scaricate quando non sono più necessarie. Al più recente, viene scaricato dopo la chiamata EndDoc .

In modalità basata su GDI, l'applicazione può inserire solo dati di blocco DSC validi usando la funzione di escape della stampante POSTSCRIPT_INJECTION. Un blocco DSC valido deve soddisfare tutte le condizioni seguenti:

  • È costituita da una sequenza integrale di "linee".
  • Ogni "riga" deve iniziare con "%%".
  • Ogni "riga" ad eccezione dell'ultima riga deve terminare con <CR>, <LF o <CR><LF>>, ad eccezione dell'ultima riga. Se l'ultima riga non termina con <CR>, <LF> o <CR><LF>, il driver aggiunge <CR><LF> dopo l'ultimo byte dei dati di inserimento.
  • Ogni "riga" deve essere di 255 byte o minore, incluso "%%", ma non deve contare la terminazione della <riga CR>/<LF> .
La funzione di escape della stampante POSTSCRIPT_PASSTHROUGH invia i dati direttamente a un driver della stampante PostScript.

Un driver PostScript supporta questa funzione di escape in modalità basata su PostScript o in modalità compatibilità, ma non in modalità basata su GDI.

Per impostare la modalità del driver PostScript, chiamare la funzione di escape POSTSCRIPT_IDENTIFY .

La funzione di escape della stampante QUERYESCSUPPORT controlla l'implementazione di una funzione di escape della stampante.

La funzione di escape della stampante SPCLPASSTHROUGH2 consente alle applicazioni che stampano nei dispositivi PostScript usando EPSPRINTING di includere procedure PostScript private e altre risorse nel contesto di salvataggio a livello di documento.

Questa escape è supportata solo per la compatibilità con le versioni precedenti con Adobe Acrobat. Altre applicazioni non devono usare questo escape obsoleto.

L'applicazione deve chiamare questo escape prima di chiamare StartDoc in modo che il driver memorizza nella cache i dati per l'inserimento nel punto corretto nel flusso PostScript. Se questo escape è supportato, il driver consentirà anche le chiamate DOWNLOADFACE di escape prima di StartDoc. Il driver memorizza internamente nella cache i dati da inserire e i dati richiesti da qualsiasi chiamata DOWNLOADFACE di escape prima di StartDoc e li genera immediatamente prima di %%EndProlog. La sequenza di chiamate SPCLPASSTHROUGH2 e DOWNLOADFACE verrà mantenuta nell'ordine in cui i dati vengono passati, ovvero una chiamata successiva genera l'output dei dati dopo i dati di una chiamata precedente. Il driver considererà i tipi di carattere scaricati dalle chiamate DOWNLOADFACE di escape pre-StartDoc come non disponibili per la rimozione durante l'ambito del processo.

Questo escape non viene registrato nei file EMF dal sistema operativo, pertanto le applicazioni devono assicurarsi che la registrazione EMF sia disattivata per tali processi usando l'escape.

Esempio

Per un esempio, vedere Ridimensionamento di un'immagine JPEG o PNG.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wingdi.h (include Windows.h)
Libreria Gdi32.lib
DLL Gdi32.dll

Vedi anche

Carattere speciale di escape

GetDeviceCaps

Funzioni dell'API spooler di stampa

Stampa