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 |