Fungsi ExtEscape (wingdi.h)

Fungsi ExtEscape memungkinkan aplikasi mengakses kemampuan perangkat yang tidak tersedia melalui GDI.

Sintaks

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

Parameter

[in] hdc

Handel ke konteks perangkat.

[in] iEscape

Fungsi escape yang akan dilakukan. Ini bisa menjadi salah satu dari berikut ini atau dapat menjadi fungsi escape yang ditentukan aplikasi.

Nilai Makna
CHECKJPEGFORMAT
Memeriksa apakah pencetak mendukung citra JPEG.
CHECKPNGFORMAT
Memeriksa apakah printer mendukung citra PNG.
DRAWPATTERNRECT
Menggambar persegi panjang putih, skala abu-abu, atau hitam.
GET_PS_FEATURESETTING
Mendapatkan informasi tentang pengaturan fitur tertentu untuk driver PostScript.
GETTECHNOLOGY
Melaporkan apakah driver tersebut adalah driver Postscript atau tidak.
PASSTHROUGH
Memungkinkan aplikasi mengirim data langsung ke printer. Didukung dalam mode kompatibilitas dan mode GDI-sentris.
POSTSCRIPT_DATA
Memungkinkan aplikasi mengirim data langsung ke printer. Hanya didukung dalam mode kompatibilitas.
POSTSCRIPT_IDENTIFY
Mengatur driver PostScript ke mode GDI-centric atau PostScript-centric.
POSTSCRIPT_INJECTION
Menyisipkan blok data mentah dalam aliran pekerjaan PostScript.
POSTSCRIPT_PASSTHROUGH
Mengirim data langsung ke driver printer PostScript. Didukung dalam mode kompatibilitas dan mode PostScript-sentris.
QUERYESCSUPPORT
Menentukan apakah escape tertentu diimplementasikan oleh driver perangkat.
SPCLPASSTHROUGH2
Memungkinkan aplikasi menyertakan prosedur privat dan sumber daya lainnya di konteks penyimpanan tingkat dokumen.

[in] cjInput

Jumlah byte data yang ditujukkan oleh parameter lpszInData .

[in] lpInData

Penunjuk ke struktur input yang diperlukan untuk escape yang ditentukan. Lihat juga Keterangan.

[in] cjOutput

Jumlah byte data yang ditujukkan oleh parameter lpszOutData .

[out] lpOutData

Pointer ke struktur yang menerima output dari escape ini. Parameter ini tidak boleh NULL jika ExtEscape disebut sebagai fungsi kueri. Jika tidak ada data yang akan dikembalikan dalam struktur ini, atur cbOutput ke 0. Lihat juga Keterangan.

Mengembalikan nilai

Nilai yang dikembalikan menentukan hasil fungsi. Ini lebih besar dari nol jika fungsi berhasil, kecuali untuk escape printer QUERYESCSUPPORT, yang hanya memeriksa implementasi. Nilai yang dikembalikan adalah nol jika escape tidak diimplementasikan. Nilai yang dikembalikan kurang dari nol menunjukkan kesalahan.

Keterangan

Catatan Ini adalah fungsi pemblokiran atau sinkron dan mungkin tidak segera kembali. Seberapa cepat fungsi ini kembali tergantung pada faktor run-time seperti status jaringan, konfigurasi server cetak, dan implementasi driver printer—faktor-faktor yang sulit diprediksi saat menulis aplikasi. Memanggil fungsi ini dari utas yang mengelola interaksi dengan antarmuka pengguna dapat membuat aplikasi tampak tidak responsif.
 
Gunakan fungsi ini untuk meneruskan nilai escape yang ditentukan driver ke perangkat.

Gunakan fungsi Escape untuk meneruskan salah satu nilai escape yang ditentukan sistem ke perangkat, kecuali escape adalah salah satu escape yang ditentukan dalam nEscape. ExtEscape mungkin tidak berfungsi dengan baik dengan escape yang ditentukan sistem. Secara khusus, escape di mana lpszInData adalah penunjuk ke struktur yang berisi anggota yang merupakan pointer akan gagal.

Perhatikan, bahwa perilaku yang dijelaskan dalam artikel ini adalah perilaku yang diharapkan, tetapi terserah driver untuk mematuhi model ini.

Variabel yang dirujuk oleh lpszInData dan lpszOutData tidak boleh sama atau tumpang tindih. Jika variabel ukuran buffer input dan output tumpang tindih, variabel tersebut mungkin tidak berisi nilai yang benar setelah panggilan kembali. Untuk hasil terbaik, lpszInData dan lpszOutData harus merujuk ke variabel yang berbeda.

Fungsi escape printer CHECKJPEGFORMAT menentukan apakah printer mendukung pencetakan gambar JPEG.

Sebelum menggunakan fungsi escape printer CHECKJPEGFORMAT , panggil fungsi escape printer QUERYESCSUPPORT untuk menentukan apakah driver mendukung CHECKJPEGFORMAT. Untuk kode sampel yang menunjukkan penggunaan CHECKJPEGFORMAT, lihat Menguji Printer untuk DUKUNGAN JPEG atau PNG.

Fungsi escape printer CHECKPNGFORMAT menentukan apakah printer mendukung pencetakan citra PNG.

Sebelum menggunakan fungsi escape printer CHECKJPEGFORMAT , panggil fungsi escape printer QUERYESCSUPPORT untuk menentukan apakah driver mendukung CHECKJPEGFORMAT. Untuk kode sampel, lihat Menguji Printer untuk Dukungan JPEG atau PNG.

Escape printer DRAWPATTERNRECT membuat persegi panjang putih, abu-abu, atau hitam pekat dengan menggunakan kemampuan pola dan aturan Page Control Language (PCL) pada printer Hewlett-Packard LaserJet atau LaserJet yang kompatibel. Skala abu-abu adalah pola abu-abu yang berisi campuran piksel hitam dan putih tertentu.

Aplikasi harus menggunakan escape QUERYESCSUPPORT untuk menentukan apakah printer mampu menggambar pola dan aturan sebelum menggunakan escape DRAWPATTERNRECT .

  • Aturan yang digambar dengan DRAWPATTERNRECT tidak tunduk pada wilayah kliping dalam konteks perangkat.
  • Aplikasi tidak boleh mencoba menghapus pola dan aturan yang dibuat dengan DRAWPATTERNRECT dengan menempatkan objek buram di atasnya.

Jika printer mendukung aturan putih, ini dapat digunakan untuk menghapus pola yang dibuat oleh DRAWPATTERNRECT. Jika pencetak tidak mendukung aturan putih, tidak ada metode untuk menghapus pola-pola ini.

Jika aplikasi tidak dapat menggunakan escape DRAWPATTERNRECT dan perangkat adalah printer, umumnya harus menggunakan fungsi PatBlt sebagai gantinya. Perhatikan bahwa jika PatBlt digunakan untuk mencetak persegi panjang hitam, aplikasi harus menggunakan operator raster BLACKNESS. Namun, jika perangkat adalah plotter, aplikasi harus menggunakan fungsi Rectangle .

Fungsi escape printer GET_PS_FEATURESETTING mengambil informasi tentang pengaturan fitur tertentu untuk driver PostScript.

Fungsi escape ini hanya didukung jika driver PostScript berada dalam mode PostScript-sentris atau dalam mode GDI-centric. Untuk mengatur mode driver PostScript, panggil fungsi escape POSTSCRIPT_IDENTIFY .

Untuk melakukan operasi ini, panggil fungsi ExtEscape dengan parameter berikut.

Fungsi escape printer GET_PS_FEATURESETTING valid jika dipanggil kapan saja setelah memanggil fungsi CreateDC dan sebelum memanggil fungsi DeleteDC .

Fungsi escape printer GETTECHNOLOGY mengidentifikasi jenis pengandar printer.

Untuk printer non-XPSDrv, escape ini melaporkan apakah driver adalah pengandar Postscript.

Untuk printer XPSDrv, escape ini melaporkan apakah driver adalah Microsoft XPS Document Converter (MXDC). Jika ya, escape mengembalikan string yang dihentikan nol "http://schemas.microsoft.com/xps/2005/06"

Fungsi escape printer PASSTHROUGH mengirimkan data langsung ke pengandar printer. Untuk melakukan operasi ini, panggil fungsi ExtEscape dengan parameter berikut.

Fungsi escape printer PASSTHROUGH didukung oleh driver PostScript dalam mode GDI-sentris atau mode kompatibilitas, tetapi tidak dalam mode PostScript-centric. Driver dalam mode PostScript-centric dapat menggunakan fungsi escape POSTSCRIPT_PASSTHROUGH . Untuk mengatur mode driver PostScript, panggil fungsi escape POSTSCRIPT_IDENTIFY .

Untuk data PASSTHROUGH yang dikirim oleh aplikasi EPSPRINTING atau PostScript-sentris, driver PostScript tidak akan melakukan modifikasi apa pun. Untuk data PASSTHROUGH yang dikirim oleh aplikasi lain, jika driver PostScript menggunakan protokol output BCP (Binary Communication Protocol) atau TBCP (Tagged Binary Communication Protocol), driver melakukan kutipan BCP atau TBCP yang sesuai pada karakter khusus, seperti yang dijelaskan dalam "Spesifikasi Protokol Komunikasi Serial Adobe dan Paralel." Ini berarti bahwa aplikasi harus mengirim data PASSTHROUGH biner ASCII atau murni.

Fungsi escape printer POSTSCRIPT_DATA mengirimkan data langsung ke pengandar pencetak. Untuk melakukan operasi ini, panggil fungsi ExtEscape dengan parameter berikut.

Fungsi POSTSCRIPT_DATA identik dengan fungsi escape PASSTHROUGH kecuali hanya didukung oleh driver PostScript dalam mode kompatibilitas. Ini tidak didukung oleh driver PostScript dalam mode PostScript-sentris atau dalam mode GDI-sentris.

Driver dalam mode PostScript-centric dapat menggunakan fungsi escape POSTSCRIPT_PASSTHROUGH , dan driver dalam mode GDI-sentris dapat menggunakan fungsi escape PASSTHROUGH . Untuk mengatur mode driver PostScript, panggil fungsi escape POSTSCRIPT_IDENTIFY .

Fungsi escape printer POSTSCRIPT_IDENTIFY mengatur driver PostScript ke mode GDI-sentris atau mode PostScript-centric.

Untuk menempatkan driver dalam mode GDI-sentris atau PostScript-sentric, pertama-tama panggil fungsi escape printer QUERYESCSUPPORT untuk menentukan apakah driver mendukung fungsi escape printer POSTSCRIPT_IDENTIFY . Jika demikian, Anda dapat mengasumsikan drivernya adalah PSCRIPT 5.0. Kemudian, sebelum memanggil fungsi escape printer lainnya, Anda harus memanggil POSTSCRIPT_IDENTIFY dan menentukan PSIDENT_GDICENTRIC atau PSIDENT_PSCENTRIC. Anda harus memanggil fungsi escape printer QUERYESCSUPPORT dan POSTSCRIPT_IDENTIFY sebelum memanggil fungsi escape printer lainnya.

Catatan Setelah driver PostScript diatur ke mode GDI-centric atau mode PostScript-centric, Anda tidak akan diizinkan untuk memanggil fungsi escape printer POSTSCRIPT_IDENTIFY lagi.
 
Jika Anda tidak menggunakan fungsi escape printer POSTSCRIPT_IDENTIFY , driver PostScript berada dalam mode kompatibilitas dan memberikan dukungan yang identik untuk fungsi escape printer PASSTHROUGH, POSTSCRIPT_PASSTHROUGH, dan POSTSCRIPT_DATA .

Untuk driver PostScript yang mendukung fungsi escape printer POSTSCRIPT_PASSTHROUGH, PASSTHROUGH, dan POSTSCRIPT_PASSTHROUGH identik.

Dalam mode PostScript-centric, aplikasi bertanggung jawab atas semua output PostScript yang menandai makalah menggunakan fungsi escape POSTSCRIPT_PASSTHROUGH . Fungsi GDI tidak diizinkan. Pengandar bertanggung jawab atas keseluruhan struktur dokumen dan pengaturan kontrol printer. Aplikasi dapat menggunakan fungsi escape printer POSTSCRIPT_INJECTION untuk menyuntikkan blok data mentah (termasuk komentar DSC) ke aliran pekerjaan di tempat tertentu.

Fungsi escape printer POSTSCRIPT_INJECTION menyisipkan blok data mentah pada titik tertentu dalam aliran pekerjaan PostScript.

Driver PostScript mendukung fungsi escape ini dalam mode GDI-sentris atau dukungan mode PostScript-centric, tetapi tidak dalam mode kompatibilitas.

Untuk mengatur mode driver PostScript, panggil fungsi escape POSTSCRIPT_IDENTIFY .

Untuk melakukan operasi ini, panggil fungsi ExtEscape dengan parameter berikut.

Driver secara internal menyimpan data injeksi dan memancarkannya pada titik yang sesuai dalam output. Informasi yang di-cache dibersihkan ketika tidak lagi diperlukan. Paling lambat, itu dibersihkan setelah panggilan EndDoc .

Dalam mode GDI-sentris, aplikasi hanya dapat menyuntikkan data blok DSC yang valid dengan menggunakan fungsi escape printer POSTSCRIPT_INJECTION . Blok DSC yang valid harus memenuhi semua kondisi berikut:

  • Ini terdiri dari urutan integral "garis."
  • Setiap "baris" harus dimulai dengan "%%".
  • Setiap "baris" kecuali baris terakhir harus berakhir dengan <CR>, <LF>, atau <CR><LF> kecuali untuk baris terakhir. Jika baris terakhir tidak berakhir dengan CR>, <LF>, atau <CR><LF>, driver menambahkan <CR><LF> setelah byte terakhir dari data <injeksi.
  • Setiap "baris" harus 255 byte atau kurang termasuk "%%" tetapi tidak menghitung <penghentian baris CR>/<LF> .
Fungsi escape printer POSTSCRIPT_PASSTHROUGH mengirim data langsung ke pengandar printer PostScript.

Driver PostScript mendukung fungsi escape ini saat dalam mode PostScript-centric atau dalam mode kompatibilitas, tetapi tidak dalam mode GDI-sentris.

Untuk mengatur mode driver PostScript, panggil fungsi escape POSTSCRIPT_IDENTIFY .

Fungsi escape printer QUERYESCSUPPORT memeriksa implementasi fungsi escape printer.

Fungsi escape printer SPCLPASSTHROUGH2 memungkinkan aplikasi yang mencetak ke perangkat PostScript menggunakan EPSPRINTING untuk menyertakan prosedur PostScript privat dan sumber daya lain di konteks penyimpanan tingkat dokumen.

Escape ini hanya didukung untuk kompatibilitas mundur dengan Adobe Acrobat. Aplikasi lain tidak boleh menggunakan escape usang ini.

Aplikasi harus memanggil escape ini sebelum memanggil StartDoc sehingga driver akan menyimpan data untuk penyisipan pada titik yang benar di aliran PostScript. Jika escape ini didukung, driver juga akan mengizinkan escape downloadface panggilan sebelum StartDoc. Driver secara internal menyimpan data untuk dimasukkan dan data yang diperlukan oleh panggilan DOWNLOADFACE escape sebelum StartDoc dan memancarkan semuanya segera sebelum %%EndProlog. Urutan panggilan SPCLPASSTHROUGH2 dan DOWNLOADFACE akan dipertahankan dalam urutan data mereka diteruskan, yaitu panggilan selanjutnya menghasilkan output data setelah data panggilan sebelumnya. Driver akan menganggap font yang diunduh oleh panggilan DOWNLOADFACE escape pra-StartDoc tidak tersedia untuk dihapus selama cakupan pekerjaan.

Escape ini tidak dicatat dalam file EMF oleh sistem operasi, oleh karena itu aplikasi harus memastikan bahwa rekaman EMF dimatikan untuk pekerjaan tersebut menggunakan escape.

Contoh

Misalnya, lihat Mengukur Gambar JPEG atau PNG.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header wingdi.h (sertakan Windows.h)
Pustaka Gdi32.lib
DLL Gdi32.dll

Lihat juga

Escape

GetDeviceCaps

Cetak Fungsi API Spooler

Pencetakan