INITIALISATION DE DDRAW


DirectDrawCreateEx
SetCooperativeLevel
SetDisplayMode


 

HRESULT WINAPI DirectDrawCreateEx(
GUID FAR *lpGUID,
LPDIRECTDRAW7 FAR *lplpDD,
REFIID iid,
IUnknown FAR *pUnkOuter
);

Type Description Valeurs
lpGUID Identificateur GUID d'un pilote d'affichage vidéo

NULL=Pilote par defaut.
DDCREATE_EMULATIONONLY=
Empèche le pilote d'utiliser les fonctions accélératrices hard.
DDCREATE_HARDWAREONLY=
Utilise toutes les fonctions accélérées par le hard.

lplpDD Adresse d'une variable qui va recevoir un pointeur vers une interface IDIRECTDRAW7
iid Identificateur GUID spécifiant le type d'interface à retourner IID_IDIRECTDRAW7
pUnkOuter Réservé NULL

En cas de succés, la fonction renvoie la valeur DD_OK.

HRESULT SetCooperativeLevel(
HWND hWnd,
DWORD dwFlags
);

Type Description Valeurs
hWnd Handle de la fenêtre de l'application (sera fourni lors de la creation de la fenêtre d'application)
dwFlags Drapeau qui definit le niveau coopératif de DDraw. On peut lier les drapeaux par l'opérateur OR bit à bit en C/C++ ( | )

DDSCL_NORMAL=L'application de déroule comme une application windows normale. Impossible de l'utiliser avec DDSCL_EXCLUSIVE ou avec DDSCL_FULLSCREEN.
DDSCL_EXCLUSIVE=L'application possède l'usage exclusif du materiel vidéo. S'emploie avec DDSCL_FULLSCREEN.
DDSCL_FULLSCREEN= Utilise le mode plein écran à la place du mode fenêtré. S'emploie avec DDSCL_EXCLUSIVE.
DDSCL_ALLOWREBOOT=Permet le redémarage avec CTRL+ALT+SUPPR.

En cas de succés, la fonction renvoie la valeur DD_OK.
Note: Le handle de fenêtre (hWnd) sera fourni lors de la création de la fenêtre d'application..

HRESULT SetDisplayMode(
DWORD dwWidth,

DWORD dwHeight,
DWORD dwBPP,
DWORD dwRefreshRate,
DWORD dwFlags
);

Type Description Valeurs
dwWidth Résolution horizontale
dwHeight Résolution verticale
dwBPP Nombre de couleurs en bit par pixel (8=256 couleurs,16=65536 couleurs ...)
dwRefreshRate Taux de rafraichissement du moniteur 0=Taux par défaut
dwFlags Options de la fonction 0=normal
DDSDM_STANDARDVGAMODE=pour utiliser une résolution VGA 13

En cas de succés, la fonction renvoie la valeur DD_OK.

Un exemple (celui de boulder):

//Declarations globales
HRESULT hRet;
LPDIRECTDRAW7 lpDD =NULL; //objet DirectDraw

//Demande le pointeur vers l'interface DDraw
hRet = DirectDrawCreateEx(NULL,(LPVOID*)&lpDD,IID_IDirectDraw7 , NULL);
if (hRet != DD_OK)
{
MessageBox(NULL,"Erreur Création objet DDraw","Boulder",MB_OK);
return FALSE;
}

// Fixe le niveau de cooperation (Fullscreen)
hRet = lpDD->SetCooperativeLevel(hWnd,DDSCL_FULLSCREEN|DDSCL_EXCLUSIVE|DDSCL_ALLOWREBOOT);
if (hRet != DD_OK)
{
MessageBox(NULL,"Erreur création coopération","Boulder",MB_OK);
return FALSE;
}

// Fixe la resolution ecran (640*480*16)
hRet = lpDD->SetDisplayMode(640,480,16,0,0);
if (hRet != DD_OK)
{
MessageBox(NULL,"Erreur de résolution","Boulder",MB_OK);
return FALSE;
}