Fungsi ChangeDisplaySettingsExA (winuser.h)
Fungsi ChangeDisplaySettingsEx mengubah pengaturan perangkat tampilan yang ditentukan ke mode grafik yang ditentukan.
Sintaks
LONG ChangeDisplaySettingsExA(
[in] LPCSTR lpszDeviceName,
[in] DEVMODEA *lpDevMode,
HWND hwnd,
[in] DWORD dwflags,
[in] LPVOID lParam
);
Parameter
[in] lpszDeviceName
Penunjuk ke string yang dihentikan null yang menentukan perangkat tampilan yang mode grafiknya akan berubah. Hanya tampilkan nama perangkat seperti yang dikembalikan oleh EnumDisplayDevices yang valid. Lihat EnumDisplayDevices untuk informasi lebih lanjut tentang nama yang terkait dengan perangkat tampilan ini.
Parameter lpszDeviceName dapat berupa NULL. Nilai NULL menentukan perangkat tampilan default. Perangkat default dapat ditentukan dengan memanggil EnumDisplayDevices dan memeriksa bendera DISPLAY_DEVICE_PRIMARY_DEVICE.
[in] lpDevMode
Penunjuk ke struktur DEVMODE yang menjelaskan mode grafis baru. Jika lpDevModeADALAH NULL, semua nilai yang saat ini ada di registri akan digunakan untuk pengaturan tampilan. Meneruskan NULL untuk parameter lpDevMode dan 0 untuk parameter dwFlags adalah cara termudah untuk kembali ke mode default setelah mode dinamis berubah.
Anggota dmSize harus diinisialisasi ke ukuran, dalam byte, dari struktur DEVMODE . Anggota dmDriverExtra harus diinisialisasi untuk menunjukkan jumlah byte data driver privat setelah struktur DEVMODE . Selain itu, Anda dapat menggunakan salah satu anggota struktur DEVMODE berikut.
Anggota | Makna |
---|---|
dmBitsPerPel | Bit per piksel |
dmPelsWidth | Lebar piksel |
dmPelsHeight | Tinggi piksel |
dmDisplayFlags | Bendera mode |
dmDisplayFrequency | Frekuensi mode |
dmPosition | Posisi perangkat dalam konfigurasi multi-monitor. |
Selain menggunakan satu atau beberapa anggota DEVMODE sebelumnya, Anda juga harus mengatur satu atau beberapa nilai berikut di anggota dmFields untuk mengubah pengaturan tampilan.
Nilai | Makna |
---|---|
DM_BITSPERPEL | Gunakan nilai dmBitsPerPel . |
DM_PELSWIDTH | Gunakan nilai dmPelsWidth . |
DM_PELSHEIGHT | Gunakan nilai dmPelsHeight . |
DM_DISPLAYFLAGS | Gunakan nilai dmDisplayFlags . |
DM_DISPLAYFREQUENCY | Gunakan nilai dmDisplayFrequency . |
DM_POSITION | Gunakan nilai dmPosition . |
hwnd
Dipesan; harus NULL.
[in] dwflags
Menunjukkan bagaimana mode grafis harus diubah. Parameter ini bisa menjadi salah satu nilai berikut.
Nilai | Makna |
---|---|
|
Mode grafik untuk layar saat ini akan diubah secara dinamis. |
|
Mode ini bersifat sementara.
Jika Anda mengubah ke dan dari desktop lain, mode ini tidak akan direset. |
|
Pengaturan akan disimpan di area pengaturan global sehingga akan memengaruhi semua pengguna pada komputer. Jika tidak, hanya pengaturan untuk pengguna yang dimodifikasi. Bendera ini hanya valid jika ditentukan dengan bendera CDS_UPDATEREGISTRY. |
|
Pengaturan akan disimpan di registri, tetapi tidak akan berlaku. Bendera ini hanya valid jika ditentukan dengan bendera CDS_UPDATEREGISTRY. |
|
Pengaturan harus diubah, meskipun pengaturan yang diminta sama dengan pengaturan saat ini. |
|
Perangkat ini akan menjadi perangkat utama. |
|
Sistem menguji apakah mode grafis yang diminta dapat diatur. |
|
Mode grafis untuk layar saat ini akan diubah secara dinamis dan mode grafis akan diperbarui dalam registri. Informasi mode disimpan di profil USER. |
|
Saat diatur, parameter lParam adalah penunjuk ke struktur VIDEOPARAMETERS . |
|
Mengaktifkan perubahan pengaturan ke mode grafis yang tidak aman. |
|
Menonaktifkan perubahan pengaturan ke mode grafis yang tidak aman. |
Menentukan CDS_TEST memungkinkan aplikasi menentukan mode grafis mana yang benar-benar valid, tanpa menyebabkan sistem berubah.
Jika CDS_UPDATEREGISTRY ditentukan dan dimungkinkan untuk mengubah mode grafis secara dinamis, informasi disimpan dalam registri dan DISP_CHANGE_SUCCESSFUL dikembalikan. Jika tidak memungkinkan untuk mengubah mode grafis secara dinamis, informasi disimpan di registri dan DISP_CHANGE_RESTART dikembalikan.
Jika CDS_UPDATEREGISTRY ditentukan dan informasi tidak dapat disimpan dalam registri, mode grafik tidak diubah dan DISP_CHANGE_NOTUPDATED dikembalikan.
[in] lParam
Jika dwFlagsCDS_VIDEOPARAMETERS, lParam adalah penunjuk ke struktur VIDEOPARAMETERS . Jika tidak , lParam harus NULL.
Mengembalikan nilai
Fungsi ChangeDisplaySettingsEx mengembalikan salah satu nilai berikut.
Menampilkan kode | Deskripsi |
---|---|
|
Perubahan pengaturan berhasil. |
|
Perubahan pengaturan tidak berhasil karena sistem berkemampuan DualView. |
|
Sekumpulan bendera yang tidak valid diteruskan. |
|
Mode grafik tidak didukung. |
|
Parameter yang tidak valid diteruskan. Ini dapat mencakup bendera yang tidak valid atau kombinasi bendera. |
|
Pengandar tampilan gagal dalam mode grafis yang ditentukan. |
|
Tidak dapat menulis pengaturan ke registri. |
|
Komputer harus dimulai ulang agar mode grafis berfungsi. |
Keterangan
Untuk memastikan bahwa struktur DEVMODE yang diteruskan ke ChangeDisplaySettingsEx valid dan hanya berisi nilai yang didukung oleh driver tampilan, gunakan DEVMODE yang dikembalikan oleh fungsi EnumDisplaySettings .
Saat menambahkan monitor tampilan ke sistem multi-monitor secara terprogram, atur DEVMODE.dmFields ke DM_POSITION dan tentukan posisi (di DEVMODE.dmPosition) untuk monitor yang Anda tambahkan yang berdekatan dengan setidaknya satu piksel area tampilan monitor yang ada. Untuk melepaskan monitor, atur DEVMODE.dmFields ke DM_POSITION tetapi atur DEVMODE.dmPelsWidth dan DEVMODE.dmPelsHeight ke nol. Untuk informasi selengkapnya, lihat Beberapa Monitor Tampilan.
Ketika mode tampilan diubah secara dinamis, pesan WM_DISPLAYCHANGE dikirim ke semua aplikasi yang sedang berjalan dengan parameter pesan berikut.
Parameter | Makna |
---|---|
wParam | Bit baru per piksel |
LOWORD(lParam) | Lebar piksel baru |
HIWORD(lParam) | Tinggi piksel baru |
Untuk mengubah pengaturan untuk lebih dari satu tampilan secara bersamaan, pertama-tama panggil ChangeDisplaySettingsEx untuk setiap perangkat satu per satu untuk memperbarui registri tanpa menerapkan perubahan. Kemudian panggil ChangeDisplaySettingsEx sekali lagi, dengan perangkat NULL , untuk menerapkan perubahan. Misalnya, untuk mengubah pengaturan untuk dua tampilan, lakukan hal berikut:
ChangeDisplaySettingsEx (lpszDeviceName1, lpDevMode1, NULL, (CDS_UPDATEREGISTRY | CDS_NORESET), NULL);
ChangeDisplaySettingsEx (lpszDeviceName2, lpDevMode2, NULL, (CDS_UPDATEREGISTRY | CDS_NORESET), NULL);
ChangeDisplaySettingsEx (NULL, NULL, NULL, 0, NULL);
Virtualisasi DPI
API ini tidak berpartisipasi dalam virtualisasi DPI. Input yang diberikan selalu dalam hal piksel fisik, dan tidak terkait dengan konteks panggilan.Catatan
Header winuser.h mendefinisikan ChangeDisplaySettingsEx 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 |
---|---|
Klien minimum yang didukung | Windows 2000 Professional [hanya aplikasi desktop] |
Server minimum yang didukung | Windows 2000 Server [hanya aplikasi desktop] |
Target Platform | Windows |
Header | winuser.h (sertakan Windows.h) |
Pustaka | User32.lib |
DLL | User32.dll |
Set API | ext-ms-win-ntuser-sysparams-ext-l1-1-1 (diperkenalkan dalam Windows 10, versi 10.0.14393) |