Struktur DEVMODEW (wingdi.h)
Struktur DEVMODEW digunakan untuk menentukan karakteristik perangkat tampilan dan cetak dalam set karakter Unicode (wide).
Sintaks
typedef struct _devicemodeW {
WCHAR dmDeviceName[CCHDEVICENAME];
WORD dmSpecVersion;
WORD dmDriverVersion;
WORD dmSize;
WORD dmDriverExtra;
DWORD dmFields;
union {
struct {
short dmOrientation;
short dmPaperSize;
short dmPaperLength;
short dmPaperWidth;
short dmScale;
short dmCopies;
short dmDefaultSource;
short dmPrintQuality;
} DUMMYSTRUCTNAME;
POINTL dmPosition;
struct {
POINTL dmPosition;
DWORD dmDisplayOrientation;
DWORD dmDisplayFixedOutput;
} DUMMYSTRUCTNAME2;
} DUMMYUNIONNAME;
short dmColor;
short dmDuplex;
short dmYResolution;
short dmTTOption;
short dmCollate;
WCHAR dmFormName[CCHFORMNAME];
WORD dmLogPixels;
DWORD dmBitsPerPel;
DWORD dmPelsWidth;
DWORD dmPelsHeight;
union {
DWORD dmDisplayFlags;
DWORD dmNup;
} DUMMYUNIONNAME2;
DWORD dmDisplayFrequency;
DWORD dmICMMethod;
DWORD dmICMIntent;
DWORD dmMediaType;
DWORD dmDitherType;
DWORD dmReserved1;
DWORD dmReserved2;
DWORD dmPanningWidth;
DWORD dmPanningHeight;
} DEVMODEW, *PDEVMODEW, *NPDEVMODEW, *LPDEVMODEW;
Anggota
dmDeviceName[CCHDEVICENAME]
Untuk tampilan, menentukan nama DLL driver tampilan; misalnya, "perm3dd" untuk driver tampilan 3Dlabs Permedia3.
Untuk printer, menentukan "nama yang mudah diingat"; misalnya, "PCL/HP LaserJet" dalam kasus PCL/HP LaserJet. Jika panjang nama lebih besar dari karakter CCHDEVICENAME, penampung memotongnya agar pas dalam array.
dmSpecVersion
Menentukan nomor versi struktur DEVMODEW ini. Nomor versi saat ini diidentifikasi oleh konstanta DM_SPECVERSION di wingdi.h.
dmDriverVersion
Untuk pencetak, tentukan nomor versi pengandar pencetak yang ditetapkan oleh pengembang pengandar pencetak.
Pengandar tampilan bisa menyetel anggota ini ke DM_SPECVERSION.
dmSize
Menentukan ukuran dalam byte struktur DEVMODEW publik, tidak termasuk anggota privat yang ditentukan driver yang diidentifikasi oleh anggota dmDriverExtra .
dmDriverExtra
Menentukan jumlah byte data driver privat yang mengikuti anggota struktur publik. Jika driver perangkat tidak menyediakan anggota DEVMODEW privat, anggota ini harus diatur ke nol.
dmFields
Menentukan bendera bit yang mengidentifikasi anggota DEVMODEW berikut yang sedang digunakan. Misalnya, bendera DM_ORIENTATION diatur saat anggota dmOrientation berisi data yang valid. Bendera DM_XXX didefinisikan dalam wingdi.h.
DUMMYUNIONNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmOrientation
Untuk pencetak, menentukan orientasi kertas. Anggota ini dapat DMORIENT_PORTRAIT atau DMORIENT_LANDSCAPE.
Anggota ini tidak digunakan untuk tampilan.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperSize
Untuk pencetak, menentukan ukuran kertas yang akan dicetak. Anggota ini harus nol jika panjang dan lebar kertas ditentukan oleh anggota dmPaperLength dan dmPaperWidth . Jika tidak, anggota dmPaperSize harus menjadi salah satu konstanta berawalan DMPAPER yang ditentukan dalam wingdi.h.
Anggota ini tidak digunakan untuk tampilan.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperLength
Untuk printer, menentukan panjang kertas, dalam satuan 1/10 milimeter. Nilai ini mengambil alih panjang kertas yang ditentukan oleh anggota dmPaperSize , dan digunakan jika kertas berukuran kustom, atau jika perangkat adalah printer matriks titik, yang dapat mencetak halaman dengan panjang arbitrer.
Anggota ini tidak digunakan untuk tampilan.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPaperWidth
Untuk printer, menentukan lebar kertas, dalam satuan 1/10 milimeter. Nilai ini mengambil alih lebar kertas yang ditentukan oleh anggota dmPaperSize . Anggota ini harus digunakan jika dmPaperLength digunakan.
Anggota ini tidak digunakan untuk tampilan.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmScale
Untuk printer, menentukan persentase di mana gambar akan diskalakan untuk pencetakan. Ukuran halaman gambar diskalakan ke halaman fisik dengan faktor dmScale/100. Misalnya, gambar 17 inci berukuran 22 inci dengan nilai skala 100 memerlukan kertas 17x22 inci, sedangkan gambar yang sama dengan nilai skala 50 harus dicetak sebagai ukuran setengah dan pas pada kertas berukuran huruf.
Anggota ini tidak digunakan untuk tampilan.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmCopies
Untuk printer, menentukan jumlah salinan yang akan dicetak, jika perangkat mendukung beberapa salinan.
Anggota ini tidak digunakan untuk tampilan.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmDefaultSource
Untuk printer, tentukan bin input default printer. Ini harus menjadi salah satu konstanta berawalan DMBIN yang ditentukan dalam wingdi.h. Jika konstanta yang ditentukan DMBIN_FORMSOURCE, bin input harus dipilih secara otomatis.
Anggota ini tidak digunakan untuk tampilan.
DUMMYUNIONNAME.DUMMYSTRUCTNAME.dmPrintQuality
Untuk pencetak, tentukan resolusi printer. Nilai konstanta negatif berikut didefinisikan dalam wingdi.h:
- DMRES_HIGH
- DMRES_MEDIUM
- DMRES_LOW
- DMRES_DRAFT
Jika nilai positif ditentukan, nilai tersebut menunjukkan jumlah titik per inci (DPI) untuk resolusi x , dan resolusi y ditentukan oleh dmYResolution.
Anggota ini tidak digunakan untuk tampilan.
DUMMYUNIONNAME.dmPosition
DUMMYUNIONNAME.DUMMYSTRUCTNAME2
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmPosition
Untuk tampilan, menentukan struktur POINTL yang berisi koordinat x- dan y sudut kiri atas layar, dalam koordinat desktop. Anggota ini digunakan untuk menentukan posisi relatif monitor di lingkungan beberapa monitor.
Anggota ini tidak digunakan untuk pencetak.
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayOrientation
Anggota ini didefinisikan hanya untuk Windows XP dan yang lebih baru.
Untuk tampilan, menentukan orientasi di mana gambar harus disajikan. Ketika bit DM_DISPLAYORIENTATION tidak diatur dalam anggota dmFields , anggota ini harus diatur ke nol. Ketika bit DM_DISPLAYORIENTATION diatur dalam anggota dmFields , anggota ini harus diatur ke salah satu nilai berikut:
Nilai | Makna |
---|---|
DMDO_DEFAULT | Orientasi perangkat tampilan mode saat ini adalah orientasi alami perangkat, dan harus digunakan sebagai default. |
DMDO_90 | Orientasi perangkat tampilan adalah 90 derajat (diukur searah jarang) dari DMDO_DEFAULT. |
DMDO_180 | Orientasi perangkat tampilan adalah 180 derajat (diukur searah jarang) dari DMDO_DEFAULT. |
DMDO_270 | Orientasi perangkat tampilan adalah 270 derajat (diukur searah jarang) dari DMDO_DEFAULT. |
Anggota ini tidak digunakan untuk pencetak.
Untuk informasi selengkapnya, lihat Mengembalikan Mode Tampilan: DrvGetModes.
DUMMYUNIONNAME.DUMMYSTRUCTNAME2.dmDisplayFixedOutput
Anggota ini didefinisikan hanya untuk Windows XP dan yang lebih baru.
Untuk tampilan resolusi tetap, menentukan bagaimana perangkat dapat menyajikan mode resolusi lebih rendah pada tampilan resolusi yang lebih tinggi. Misalnya, jika resolusi perangkat tampilan diperbaiki pada 1024 X 768, dan modenya diatur ke 640 x 480, perangkat dapat menampilkan gambar 640 X 480 dalam ruang layar 1024 X 768, atau meregangkan gambar 640 X 480 untuk mengisi ruang layar yang lebih besar.
Ketika bit DM_DISPLAYFIXEDOUTPUT tidak diatur dalam anggota dmFields , anggota ini harus diatur ke nol. Ketika bit DM_DISPLAYFIXEDOUTPUT diatur dalam anggota dmFields , anggota ini harus diatur ke salah satu nilai berikut:
Nilai | Makna |
---|---|
DMDFO_CENTER | Perangkat tampilan menyajikan gambar mode resolusi yang lebih rendah dengan memusatkannya di ruang layar yang lebih besar. |
DMDFO_STRETCH | Perangkat tampilan menyajikan gambar mode resolusi lebih rendah dengan meregangkannya untuk mengisi ruang layar yang lebih besar. |
Anggota ini tidak digunakan untuk pencetak.
Untuk informasi selengkapnya, lihat Mengembalikan Mode Tampilan: DrvGetModes.
dmColor
Untuk pencetak, tentukan apakah printer warna harus mencetak warna atau monokrom. Anggota ini bisa menjadi salah satu DMCOLOR_COLOR atau DMCOLOR_MONOCHROME.
Anggota ini tidak digunakan untuk tampilan.
dmDuplex
Untuk printer, menentukan pencetakan dupleks (dua sisi) untuk printer berkemampuan dupleks. Anggota ini bisa menjadi salah satu nilai berikut:
DMDUP_HORIZONTAL
Cetak dua sisi, menggunakan pengikatan tepi pendek.
DMDUP_SIMPLEX
Cetak satu sisi.
DMDUP_VERTICAL
Cetak dua sisi, menggunakan pengikatan tepi panjang.
Anggota ini tidak digunakan untuk tampilan.
dmYResolution
Untuk printer, menentukan resolusi y printer, di DPI. Jika anggota ini digunakan, anggota dmPrintQuality menentukan resolusi x .
Anggota ini tidak digunakan untuk tampilan.
dmTTOption
Untuk printer, tentukan bagaimana font TrueType harus dicetak. Anggota ini harus menjadi salah satu konstanta berawalan DMTT yang ditentukan dalam wingdi.h.
Anggota ini tidak digunakan untuk tampilan.
dmCollate
Untuk printer, tentukan apakah beberapa salinan harus disusun. Anggota ini bisa menjadi salah satu nilai berikut:
DMCOLLATE_TRUE
Susun ketika mencetak beberapa salinan.
DMCOLLATE_FALSE
Jangan menyusun ketika mencetak beberapa salinan.
Anggota ini tidak digunakan untuk tampilan.
dmFormName[CCHFORMNAME]
Untuk printer, menentukan nama formulir yang akan digunakan; seperti "Letter" atau "Legal". Ini harus menjadi nama yang dapat diperoleh dengan memanggil fungsi Win32 EnumForms .
Anggota ini tidak digunakan untuk tampilan.
dmLogPixels
Untuk tampilan, menentukan jumlah piksel logis per inci perangkat tampilan dan harus sama dengan anggota ulLogPixels dari struktur GDIINFO .
Anggota ini tidak digunakan untuk pencetak.
dmBitsPerPel
Untuk tampilan, menentukan resolusi warna, dalam bit per piksel, dari perangkat tampilan.
Anggota ini tidak digunakan untuk pencetak.
dmPelsWidth
Untuk tampilan, menentukan lebar, dalam piksel, dari permukaan perangkat yang terlihat.
Anggota ini tidak digunakan untuk pencetak.
dmPelsHeight
Untuk tampilan, menentukan tinggi, dalam piksel, dari permukaan perangkat yang terlihat.
Anggota ini tidak digunakan untuk pencetak.
DUMMYUNIONNAME2
DUMMYUNIONNAME2.dmDisplayFlags
Menentukan mode tampilan perangkat. Anggota ini bisa menjadi kombinasi dari nilai berikut.
Nilai | Makna |
---|---|
DM_GRAYSCALE | Menentukan bahwa tampilan adalah perangkat nonwarna. Jika bendera ini tidak diatur, warna diasumsikan. Bendera ini tidak lagi valid. |
DM_INTERLACED | Menentukan bahwa mode tampilan terjalin. Jika bendera tidak diatur, maka tidak terinterlaced akan diasumsikan. |
Driver tampilan menggunakan anggota ini; misalnya, dalam fungsi ChangeDisplaySettings . Pengandar pencetak tidak menggunakan anggota ini.
DUMMYUNIONNAME2.dmNup
Untuk printer, menentukan apakah sistem cetak menangani pencetakan "N-up" (memutar beberapa halaman logis EMF ke satu halaman fisik). Nilai anggota ini bisa menjadi salah satu dari berikut ini:
Nilai | Makna |
---|---|
DMNUP_SYSTEM | Sistem cetak menangani pencetakan "N-up". |
DMNUP_ONEUP | Sistem cetak tidak menangani pencetakan "N-up". Aplikasi dapat mengatur dmNup ke DMNUP_ONEUP jika berniat untuk melakukan pencetakan "N-up" sendiri. |
Anggota ini tidak digunakan untuk tampilan.
dmDisplayFrequency
Untuk tampilan, menentukan frekuensi, di hertz, dari perangkat tampilan dalam mode saat ini.
Anggota ini tidak digunakan untuk pencetak.
dmICMMethod
Menentukan salah satu konstanta berawalan DMICMMETHOD yang ditentukan dalam wingdi.h.
dmICMIntent
Menentukan salah satu konstanta berawalan DMICM yang ditentukan dalam wingdi.h.
dmMediaType
Menentukan salah satu konstanta berawalan DMMEDIA yang ditentukan dalam wingdi.h.
dmDitherType
Menentukan salah satu konstanta berawalan DMDITHER yang ditentukan dalam wingdi.h.
dmReserved1
Dicadangkan untuk penggunaan sistem dan harus diabaikan oleh driver.
dmReserved2
Dicadangkan untuk penggunaan sistem dan harus diabaikan oleh driver.
dmPanningWidth
Dicadangkan untuk penggunaan sistem dan harus diabaikan oleh driver.
dmPanningHeight
Dicadangkan untuk penggunaan sistem dan harus diabaikan oleh driver.
Keterangan
Struktur DEVMODEW adalah versi Unicode dari struktur DEVMODE (dijelaskan dalam dokumentasi Microsoft Windows SDK). Meskipun aplikasi dapat menggunakan versi ANSI atau Unicode dari struktur, driver diperlukan untuk menggunakan versi Unicode.
Untuk pengandar pencetak, struktur DEVMODEW digunakan untuk menentukan karakteristik printer yang diperlukan oleh dokumen cetak. Ini juga digunakan untuk menentukan karakteristik default printer.
Segera mengikuti anggota yang ditentukan struktur DEVMODEW (sering disebut sebagai anggota publiknya), mungkin ada sekumpulan anggota yang ditentukan pengemudi (sering disebut sebagai anggota DEVMODEW privat). Driver memasok ukuran, dalam byte, dari area privat ini di dmDriverExtra. Anggota privat yang ditentukan driver untuk penggunaan eksklusif oleh driver. Alamat awal untuk anggota privat dapat dirujuk menggunakan anggota dmSize sebagai berikut:
PVOID pvDriverData = (PVOID) (((BYTE *) pdm) + (pdm->dmSize));
Driver dapat mengandalkan penampung untuk melewati buffer DEVMODEW yang tidak lebih kecil dari byte (dmSize + dmDriverExtra). Akibatnya, driver dapat dengan aman membaca jumlah byte tersebut mulai dari awal buffer tanpa menyebabkan pelanggaran akses, dan tanpa perlu memeriksa memori.
Sebelum memainkan EMF, GDI memanggil penampung untuk memvalidasi konten bagian publik buffer DEVMODEW. Jika buffer DEVMODEW tidak lulus tes validasi yang dilakukan di penampung, GDI tidak meneruskan buffer ke driver printer.
Di Windows XP, anggota struct baru ditambahkan. Anggota struktur ini berisi anggota struktur DEVMODEW yang ada, dmPosition, bersama dengan dua anggota baru, dmDisplayOrientation dan dmDisplayFixedOutput. Anggota ini dijelaskan di bagian Anggota sebelumnya.
Juga untuk Windows XP, beberapa anggota struktur DEVMODEW dipindahkan ke lokasi yang berbeda dalam struktur ini. Anggota dmScale, dmCopies, dmDefaultSource, dan dmPrintQuality ditambahkan ke anggota struct yang berisi anggota dmOrientation, dmPaperSize, dmPaperLength, dan dmPaperWidth .
Catatan
Header wingdi.h mendefinisikan DEVMODE sebagai alias yang secara otomatis memilih versi ANSI atau Unicode dari fungsi ini berdasarkan definisi konstanta pra-prosesor UNICODE. Mencampur penggunaan alias encoding-netral dengan kode yang tidak mengodekan-netral dapat menyebabkan ketidakcocokan yang mengakibatkan kesalahan kompilasi atau runtime. Untuk informasi selengkapnya, lihat Konvensi untuk Prototipe Fungsi.
Persyaratan
Persyaratan | Nilai |
---|---|
Header | wingdi.h (termasuk Wingdi.h) |