Metodo IDirectDraw7::SetCooperativeLevel (ddraw.h)

Determina il comportamento principale dell'applicazione.

Sintassi

HRESULT SetCooperativeLevel(
  [in] HWND  unnamedParam1,
  [in] DWORD unnamedParam2
);

Parametri

[in] unnamedParam1

Handle di finestra usato per l'applicazione. Impostare sull'handle di finestra di primo livello dell'applicazione chiamante (non un handle per le finestre figlio create dalla finestra di primo livello). Questo parametro può essere NULL quando il flag DDSCL_NORMAL viene specificato nel parametro dwFlags .

[in] unnamedParam2

Questo valore è costituito da uno o più flag seguenti:

DDSCL_ALLOWMODEX

Consente l'uso delle modalità di visualizzazione Mode X. Questo flag può essere usato solo se sono presenti i flag DDSCL_EXCLUSIVE e DDSCL_FULLSCREEN.

DDSCL_ALLOWREBOOT

Consente il funzionamento di CTRL+ALT+CANC mentre è in modalità esclusiva (schermo intero).

DDSCL_CREATEDEVICEWINDOW

Questo flag è supportato solo in Windows 98 e Windows 2000. Indica che DirectDraw creerà e gestirà una finestra del dispositivo predefinita per questo oggetto DirectDraw.

DDSCL_EXCLUSIVE

Richiede il livello esclusivo. Questo flag deve essere usato con il flag DDSCL_FULLSCREEN.

DDSCL_FPUPRESERVE

L'applicazione chiamante si occupa dello stato FPU e non vuole che Direct3D lo modifichi in modo visibile all'applicazione. In questa modalità Direct3D salva e ripristina lo stato FPU ogni volta che deve modificare lo stato FPU.

DDSCL_FPUSETUP

È probabile che l'applicazione chiamante mantenga la FPU configurata per prestazioni Direct3D ottimali (precisione singola ed eccezioni disabilitate), quindi Direct3D non deve impostare in modo esplicito la FPU ogni volta. Questo è lo stato predefinito.

DDSCL_FULLSCREEN

Il proprietario in modalità esclusiva è responsabile dell'intera superficie primaria. L'GDI può essere ignorato. Questo flag deve essere usato con il flag DDSCL_EXCLUSIVE.

DDSCL_MULTITHREADED

Richiede un comportamento DirectDraw multithread-safe. In questo modo Direct3D assume più frequentemente la sezione critica globale.

DDSCL_NORMAL

L'applicazione funziona come un'applicazione Windows tipica. Questo flag non può essere usato con i flag DDSCL_ALLOWMODEX, DDSCL_EXCLUSIVE o DDSCL_FULLSCREEN.

DDSCL_NOWINDOWCHANGES

DirectDraw non può ridurre al minimo o ripristinare la finestra dell'applicazione all'attivazione.

DDSCL_SETDEVICEWINDOW

Questo flag è supportato solo in Windows 98 e Windows 2000. Indica che il parametro hWnd è l'handle di finestra della finestra del dispositivo per questo oggetto DirectDraw. Questo flag non può essere usato con il flag DDSCL_SETFOCUSWINDOW.

DDSCL_SETFOCUSWINDOW

Questo flag è supportato solo in Windows 98 e Windows 2000. Indica che il parametro hWnd è l'handle di finestra della finestra messa a fuoco per questo oggetto DirectDraw. Questo flag non può essere usato con il flag DDSCL_SETDEVICEWINDOW.

Valore restituito

Se il metodo ha esito positivo, il valore restituito viene DD_OK.

Se ha esito negativo, il metodo può restituire uno dei valori di errore seguenti:

  • DDERR_EXCLUSIVEMODEALREADYSET
  • DDERR_HWNDALREADYSET
  • DDERR_HWNDSUBCLASSED
  • DDERR_INVALIDOBJECT
  • DDERR_INVALIDPARAMS
  • DDERR_OUTOFMEMORY

Commenti

Questo metodo deve essere chiamato dallo stesso thread che ha creato la finestra dell'applicazione.

Un'applicazione deve impostare il DDSCL_EXCLUSIVE o il flag di DDSCL_NORMAL.

Il flag DDSCL_EXCLUSIVE deve essere impostato per chiamare le funzioni che possono influire negativamente sulle prestazioni di altre applicazioni.

L'interazione tra questo metodo e il metodo IDirectDraw7::SetDisplayMode differisce dalle controparti IDirectDraw.

Se si usa Microsoft Foundation Classes (MFC), l'handle di finestra passato a questo metodo deve identificare la finestra principale dell'applicazione, non una finestra figlio derivata. Per recuperare l'handle di finestra principale dell'applicazione MFC, è possibile usare il codice seguente:


HWND hwndTop = AfxGetMainWnd()->GetSafeHwnd();

Requisiti

Requisito Valore
Piattaforma di destinazione Windows
Intestazione ddraw.h
Libreria Ddraw.lib
DLL Ddraw.dll

Vedi anche

IDirectDraw7