Bagikan melalui


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

Lihat juga

IDirectDraw7