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. |
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. |
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;
}