Menambahkan formulir ke database formulir

Penting

Platform cetak modern adalah sarana komunikasi pilihan Windows dengan printer. Kami menyarankan agar Anda menggunakan driver kelas kotak masuk IPP Microsoft, bersama dengan Print Support Apps (PSA), untuk menyesuaikan pengalaman cetak di Windows 10 dan 11 untuk pengembangan perangkat printer.

Untuk informasi selengkapnya, lihat Panduan Desain Aplikasi Dukungan Cetak v1 dan v2.

Jika printer Anda mendukung formulir tambahan, Anda dapat menambahkannya ke pengandar pencetak Unidrv dengan menjelaskannya dalam file GPD untuk pengandar pencetak. Jika Anda menggunakan ID sumber daya dengan bidang *rcNameId dan DLL sumber daya untuk string nama tampilan formulir, driver Anda akan secara otomatis menggunakan fitur peningkatan pelokalan baru yang disediakan driver printer Windows Vista Unidrv. Plug-in driver printer Unidrv juga secara otomatis mendapat manfaat dari perubahan ini pada spooler dan tidak memerlukan modifikasi tambahan. Untuk informasi lebih lanjut tentang penyempurnaan ini, lihat Perubahan pada Formulir Printer di Windows Vista.

Jika Anda tidak menggunakan DLL sumber daya untuk string yang dapat dilokalkan dalam file GPD, Anda harus menghapus string yang dapat dilokalkan, menyimpannya di DLL sumber daya, dan mengganti string dengan ID sumber daya yang sesuai dalam file GPD.

Contoh kode berikut adalah kutipan dari file GPD yang menggunakan ID sumber daya untuk nama tampilan.

*Feature: PaperSize
{
    *Option: Option2
    {
 *rcNameID: 259
        (form definition)
    }
    (other form definitions).
}

Di dalam driver printer Unidrv yang disediakan dengan Windows Vista, struktur FORM_INFO_2 diisi oleh data yang dibaca dari file GPD, seperti yang ditunjukkan tabel berikut. Jika file GPD untuk pencetak Anda sudah berisi informasi yang diperlukan untuk mengisi struktur ini, Anda tidak perlu mengubah apa pun untuk menggunakan fitur baru yang disediakan driver printer Windows Vista Unidrv.

typedef struct _FORM_INFO_2 { 
  DWORD    Flags; 
  LPTSTR   pName; 
  SIZEL    Size; 
  RECTL    ImageableArea;
  LPCSTR   pKeyword;
  DWORD    StringType;
  LPCTSTR  pMuiDll;
  DWORD    dwResourceId;
  LPCTSTR  pDisplayName;
  LANGID   wLangId; 
} FORM_INFO_2, *PFORM_INFO_2;
Bidang FORM_INFO_2 Nilai GPD yang digunakan Deskripsi bidang
Bendera PENCETAK_FORMULIR

Nilai ini ditetapkan oleh pengandar printer Unidrv karena sedang menambahkan formulir. Nilai dari file GPD tidak digunakan untuk bidang ini.
Properti struktur.
pName Nama lokal formulir yang diperoleh dari DLL sumber daya atau dari bidang *rcName pada file GPD. Penunjuk ke string yang diakhiri dengan null yang menentukan nama formulir. String ini digunakan untuk mengidentifikasi formulir dalam database formulir dan harus unik.
Ukuran Informasi tentang ukuran yang dibaca dari opsi *PageDimensions di dalam file GPD. Lebar dan tinggi, dalam seperseribu milimeter, dari bentuk.
Area Tergambar Informasi ukuran yang dibaca dari opsi *PrintableArea pada file GPD. Lebar dan tinggi, dalam seribu milimeter, dari area halaman tempat printer dapat mencetak.
pKeyword Nilai entri *Opsi dalam berkas GPD. Penunjuk ke pengidentifikasi string formulir yang tidak dapat dilokalkan. Ketika diteruskan ke AddForm atau SetForm, penunjuk ini memberi pemanggil cara untuk mengidentifikasi formulir di semua lokal.
StringType STRING_MUIDLL

Jika GPD menggunakan opsi *rcNameId dan nama formulir tersedia dari DLL sumber daya, nilai STRING_MUIDLL ditetapkan. Jika opsi *rcName digunakan dalam file GPD, nilainya diatur ke STRING_NONE. Nilai dari file GPD tidak digunakan untuk bidang ini.
Menentukan bagaimana nama tampilan yang dilokalkan untuk formulir diperoleh saat runtime.
pMuiDll Nilai entri *ResourceDLL dalam file GPD jika opsi *rcNameId digunakan. Jika opsi *rcName digunakan dalam file GPD sebagai gantinya, nilai untuk bidang ini adalah NULL. DLL sumber daya MUI yang dilokalkan yang berisi nama tampilan terlokalisasi ketika StringType berisi STRING_MUIDLL.
dwResourceId Nilai entri *rcNameID dalam file GPD. Jika opsi *rcName digunakan dalam file GPD sebagai gantinya, nilai untuk bidang ini adalah 0. ID sumber daya, di pMuiDll, dari nama tampilan formulir saat StringType berisi STRING_MUIDLL.
pDisplayName NULL

Bidang ini tidak digunakan.
Nama tampilan formulir dalam bahasa yang ditentukan oleh wLangId ketika StringType berisi STRING_LANGPAIR.
wLangId 0

Bidang ini tidak digunakan.
Bahasa pDisplayName saat StringType berisi STRING_LANGPAIR.