Metode IDirectDraw7::SetCooperativeLevel (ddraw.h)
Menentukan perilaku tingkat atas aplikasi.
Sintaks
HRESULT SetCooperativeLevel(
[in] HWND unnamedParam1,
[in] DWORD unnamedParam2
);
Parameter
[in] unnamedParam1
Handel jendela yang digunakan untuk aplikasi. Atur ke handel jendela tingkat atas aplikasi panggilan (bukan handel untuk jendela anak apa pun yang dibuat oleh jendela tingkat atas). Parameter ini dapat berupa NULL ketika bendera DDSCL_NORMAL ditentukan dalam parameter dwFlags .
[in] unnamedParam2
Nilai ini terdiri dari satu atau beberapa bendera berikut:
DDSCL_ALLOWMODEX
Memungkinkan penggunaan mode tampilan Mode X. Bendera ini hanya dapat digunakan jika bendera DDSCL_EXCLUSIVE dan DDSCL_FULLSCREEN ada.
DDSCL_ALLOWREBOOT
Memungkinkan CTRL+ALT+DEL berfungsi saat berada dalam mode eksklusif (layar penuh).
DDSCL_CREATEDEVICEWINDOW
Bendera ini hanya didukung di Windows 98 dan Windows 2000. Menunjukkan bahwa DirectDraw akan membuat dan mengelola jendela perangkat default untuk objek DirectDraw ini.
DDSCL_EXCLUSIVE
Meminta tingkat eksklusif. Bendera ini harus digunakan dengan bendera DDSCL_FULLSCREEN.
DDSCL_FPUPRESERVE
Aplikasi panggilan peduli dengan status FPU dan tidak ingin Direct3D memodifikasinya dengan cara yang terlihat oleh aplikasi. Dalam mode ini, Direct3D menyimpan dan memulihkan status FPU setiap kali perlu memodifikasi status FPU.
DDSCL_FPUSETUP
Aplikasi panggilan kemungkinan akan menjaga FPU tetap disiapkan untuk performa Direct3D yang optimal (presisi tunggal dan pengecualian dinonaktifkan), sehingga Direct3D tidak perlu secara eksplisit mengatur FPU setiap kali. Ini adalah status default.
DDSCL_FULLSCREEN
Pemilik mode eksklusif bertanggung jawab atas seluruh permukaan utama. GDI dapat diabaikan. Bendera ini harus digunakan dengan bendera DDSCL_EXCLUSIVE.
DDSCL_MULTITHREADED
Meminta perilaku DirectDraw multithread-safe. Hal ini menyebabkan Direct3D mengambil bagian kritis global lebih sering.
DDSCL_NORMAL
Aplikasi ini berfungsi sebagai aplikasi Windows yang khas. Bendera ini tidak dapat digunakan dengan bendera DDSCL_ALLOWMODEX, DDSCL_EXCLUSIVE, atau DDSCL_FULLSCREEN.
DDSCL_NOWINDOWCHANGES
DirectDraw tidak diizinkan untuk meminimalkan atau memulihkan jendela aplikasi saat aktivasi.
DDSCL_SETDEVICEWINDOW
Bendera ini hanya didukung di Windows 98 dan Windows 2000. Menunjukkan bahwa parameter hWnd adalah handel jendela jendela perangkat untuk objek DirectDraw ini. Bendera ini tidak dapat digunakan dengan bendera DDSCL_SETFOCUSWINDOW.
DDSCL_SETFOCUSWINDOW
Bendera ini hanya didukung di Windows 98 dan Windows 2000. Menunjukkan bahwa parameter hWnd adalah handel jendela jendela fokus untuk objek DirectDraw ini. Bendera ini tidak dapat digunakan dengan bendera DDSCL_SETDEVICEWINDOW.
Nilai kembali
Jika metode berhasil, nilai yang dikembalikan adalah DD_OK.
Jika gagal, metode dapat mengembalikan salah satu nilai kesalahan berikut:
- DDERR_EXCLUSIVEMODEALREADYSET
- DDERR_HWNDALREADYSET
- DDERR_HWNDSUBCLASSED
- DDERR_INVALIDOBJECT
- DDERR_INVALIDPARAMS
- DDERR_OUTOFMEMORY
Keterangan
Metode ini harus dipanggil oleh utas yang sama yang membuat jendela aplikasi.
Aplikasi harus mengatur bendera DDSCL_EXCLUSIVE atau DDSCL_NORMAL.
Bendera DDSCL_EXCLUSIVE harus diatur ke fungsi panggilan yang dapat berdampak buruk pada performa aplikasi lain.
Interaksi antara metode ini dan metode IDirectDraw7::SetDisplayMode berbeda dari pasangan IDirectDraw mereka.
Jika Anda menggunakan Microsoft Foundation Classes (MFC), handel jendela yang diteruskan ke metode ini harus mengidentifikasi jendela tingkat atas aplikasi, bukan jendela turunan. Untuk mengambil handel jendela tingkat atas aplikasi MFC, Anda dapat menggunakan kode berikut:
HWND hwndTop = AfxGetMainWnd()->GetSafeHwnd();
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Windows |
Header | ddraw.h |
Pustaka | Ddraw.lib |
DLL | Ddraw.dll |