|
DirectX / DirectDraw
|
Création
d'un objet DirectDraw
|
Utilisation de la fonction DirectDrawCreate
HRESULT DirectDrawCreate
|
Paramètre
|
Description
|
|
GUID FAR * lpGUID
|
Adresse de l'identificateur unique du péripherique d'affichage
pour l'interface principale la valeur est NULL
|
|
LPDIRECTDRAW FAR * lplpDD
|
Adresse du pointeur vers l'interface DirectDraw
|
|
lUnknown FAR * pUnkOuter
|
NULL par défaut car valeur non utilisée
|
#include <ddraw.h>
LPDIRECTDRAW lpDirectDraw; //Déclaration du pointeur de l'interface DirectDraw
HRESULT hResultat;
hResultat = DirectDrawCreate ( NULL, &lpDirectDraw, NULL);
// On doit tester le code retour
if (hResultat !=
DD_OK) throw
Exception( "Erreur sur la fonction DirectDrawCreate");
|
Définition
du niveau coopératif
|
Utilisation de la fonction SetCooperativeLevel
HRESULT SetCooperativeLevel
|
Paramètre
|
Description
|
|
HWND hWnd
|
Handle de la fenêtre de votre application. Peut être
NULL si le niveau est DDSCL_NORMAL
|
|
DWORD dwFlags
|
Voir liste ci dessous
|
|
Indicateur
|
Description
|
|
DDSCL_ALLOWMODEX
|
Handle de la fenêtre de votre application. Peut être
NULL si le niveau est DDSCL_NORMAL
|
|
DDSCL_ALLOWREBOOT
|
Autorise le redémarrage du système (CTRL+ALT+SUPPR)
|
|
DDSCL_EXCLUSIVE
|
Accès exclusif à l'écran
|
|
DDSCL_FULLSCREEN
|
Mode plein écran
|
|
DDSCL_NORMAL
|
Affichage dans une fenêtre normale de Windows
|
|
DDSCL_NOWINDOWCHANGES
|
DirectDraw ne devrait pas réduire ou restaurer l'application
automatiquement.
|
hResultat = lpDirectDraw->SetCooperativeLevel(Handle, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
// On doit tester le code retour
if (hResultat !=
DD_OK) throw
Exception( "Erreur sur la fonction SetCooperativeLevel");
Utilisation de la fonction SetDisplayMode
HRESULT SetDisplayMode
|
Paramètre
|
Description
|
|
DWORD dwWidth
|
Largeur d'affichage en pixel
|
|
DWORD dwHeight
|
Hauteur d'affichage en pixel
|
|
DWORD dwBPP
|
Profondeur de bits des pixels
|
hResultat = lpDirectDraw->SetDisplayMode(640, 480,16);
// On doit tester le code retour
if (hResultat !=
DD_OK) throw
Exception( "Erreur sur la fonction SetDisplayMode");
Utilisation de la fonction GetDisplayMode
HRESULT GetDisplayMode
|
Paramètre
|
Description
|
|
LPDDSURFACEDESC lpDDSurfaceDesc
|
Description de la surface décrivant le mode courant.
|
Utilisation de la fonction CreateSurface
HRESULT CreateSurface
|
Paramètre
|
Description
|
|
LPDDSURFACEDESC lpDDSurfaceDesc
|
Structure DDSURFACEDESC décrivant la surface à créer.
|
|
LPDIRECTDRAWSURFACE FAR * lplpDDSurface
|
Adresse d'un pointeur qui sera initialisé afin de pointer
vers la surface créée.
|
|
lUnknown FAR * pUnkOuter
|
Inutilisé doit valoir NULL
|
Exemple de création de surface primaire
DDSURFACEDESC ddsd;
ddsd.dwSize = sizeof ( ddsd );
ddsd.dwFlags = DDSD_CAPS;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
hResultat = lpDirectDraw->CreateSurface(&ddsd, &lpDDSPrimaire, NULL);
// On doit tester le code retour
if (hResultat !=
DD_OK) throw
Exception( "Erreur sur la fonction CreateSurface ");
|
Obtention du contexte
du périphérique
|
Utilisation de la fonction GetDC
HRESULT GetDC
|
Paramètre
|
Description
|
|
HDC FAR * lphDC
|
Adresse d'un handle de contexte de périphérique qui
sera initialisé par l'appel.
|
hResultat = lpDDSPrimaire
->GetDC( &hdc );
// On doit tester le code retour
if (hResultat !=
DD_OK) throw
Exception( "Erreur sur la fonction GetDC ");
|
Libération
du contexte du périphérique
|
Utilisation de la fonction ReleaseDC
HRESULT ReleaseDC
|
Paramètre
|
Description
|
|
HDC hDC
|
Contexte de périphérique obtenu par la fonction GetDC.
|
lpDDSPrimaire ->ReleaseDC( hdc );
|
Libération
d'un objet DirectDraw
|
if (lpDirectDraw != NULL)
- {
- lpDirectDraw->Release();
- lpDirectDraw = NULL;
- }
|