begin process at 2010 02 10 17:20:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

DirectX

 > 

siouplait la charite pour un pov newbie


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

siouplait la charite pour un pov newbie

dimanche 15 février 2004 à 20:13:35 | siouplait la charite pour un pov newbie

seichettmorru

je compile, ca marche
je lance ca me dit "impossible de communiquer avec la carte"
j'ai une geforce ti+directx 8.
vous etes mon dernier recours:


#include <windows.h>
#include <fmod.h>
#include <d3d8.h>
#include <d3dx8.h>
#include <dxerr8.h>
#include <dinput.h>
#include <process.h>




/*variables pour directx*/
LPDIRECT3D8 g_objetD3D;
LPDIRECT3DDEVICE8 g_peripherique3D;
LPD3DXSPRITE g_routinesSprites;
LPDIRECTINPUT8 g_objetDI;
HRESULT hr;
D3DXVECTOR2 d3dxv1 = D3DXVECTOR2(1.0,1.0);
D3DXVECTOR2 d3dxv2 = D3DXVECTOR2(50.0,50.0);
LPDIRECT3DTEXTURE8 image;


/*declare la fonction afficher*/
void afficher(char*, HWND);
/* Declare Windows procedure */
LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

/* Make the class name into a global variable */
char szClassName[ ] = "WindowsApp";


int WINAPI
WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)

{
HWND hwnd; /* This is the handle for our window */
MSG messages; /* Here messages to the application are saved */
WNDCLASSEX wincl; /* Data structure for the windowclass */

/* The Window structure */
wincl.hInstance = hThisInstance;
wincl.lpszClassName = szClassName;
wincl.lpfnWndProc = WindowProcedure; /* This function is called by windows */
wincl.style = CS_DBLCLKS; /* Catch double-clicks */
wincl.cbSize = sizeof (WNDCLASSEX);

/* Use default icon and mouse-pointer */
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL; /* No menu */
wincl.cbClsExtra = 0; /* No extra bytes after the window class */
wincl.cbWndExtra = 0; /* structure or the window instance */
/* Use Windows's default color as the background of the window */
wincl.hbrBackground = (HBRUSH) COLOR_BACKGROUND;

/* Register the window class, and if it fails quit the program */
if (!RegisterClassEx (&wincl))
return 0;

/* The class is registered, let's create the program*/
hwnd = CreateWindowEx (
0, /* Extended possibilites for variation */
szClassName, /* Classname */
"Windows App", /* Title Text */
WS_OVERLAPPEDWINDOW, /* default window */
CW_USEDEFAULT, /* Windows decides the position */
CW_USEDEFAULT, /* where the window ends up on the screen */
800, /* The programs width */
600, /* and height in pixels */
GetDesktopWindow(), /* The window is a child-window to desktop */
NULL, /* No menu */
hThisInstance, /* Program Instance handler */
NULL /* No Window Creation data */
);



/* Make the window visible on the screen */
if (hwnd){
ShowWindow (hwnd, SW_SHOW);
}

// declaration de l'objet directx
g_objetD3D=Direct3DCreate8(D3D_SDK_VERSION);

// parametre dx
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS));
d3dpp.BackBufferWidth=800;
d3dpp.BackBufferHeight=600;
d3dpp.BackBufferFormat=D3DFMT_A8R8G8B8;
d3dpp.BackBufferCount=2;
d3dpp.hDeviceWindow=NULL;
d3dpp.SwapEffect=D3DSWAPEFFECT_FLIP;
d3dpp.Windowed =TRUE;
d3dpp.FullScreen_RefreshRateInHz = 0;

//communication carte graphique
if(FAILED(hr=g_objetD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hwnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&g_peripherique3D)))
{
MessageBox(hwnd, "Impossible de communiquer avec la carte 3D !", "Erreur", MB_OK | MB_ICONEXCLAMATION );
PostQuitMessage(0);

}

// creation sprite
D3DXCreateSprite( g_peripherique3D, &g_routinesSprites);

if( image != NULL )
image->Release();

hr = D3DXCreateTextureFromFile( g_peripherique3D,
"pinguz.bmp",
&image
);


/* Run the message loop. It will run until GetMessage() returns 0 */
while (messages.message != WM_QUIT)
{
if(GetMessage (&messages, NULL, 0, 0))
{
/* Translate virtual-key messages into character messages */
TranslateMessage(&messages);
/* Send message to WindowProcedure */
DispatchMessage(&messages);

}
else
{
afficher("salut",hwnd);
// indique que le rendu commence
g_peripherique3D->BeginScene();
g_peripherique3D->Clear(0,NULL,D3DCLEAR_TARGET,0x00000000,0.0,0);
g_routinesSprites->Begin();


// afficher sprite
hr = g_routinesSprites->Draw(
image, // image à copier
NULL, // rectangle indiquant la portion d'image à copier (ici, tout)
&d3dxv1, // scaling
NULL, // pas de rotation
0, // nb degrés de rotation
&d3dxv2, // coordonnées de l'image à l'écran
5 // pas de changement de couleur
);
//rendu final
g_routinesSprites->End();
g_peripherique3D->EndScene();
g_peripherique3D->Present(NULL,NULL,NULL,NULL);

}
}

//liberation memoire
if( g_routinesSprites != NULL )
g_routinesSprites->Release();

if( g_peripherique3D != NULL )
g_peripherique3D->Release();

if( g_objetD3D != NULL )
g_objetD3D->Release();

if( image != NULL )
image->Release();

/* The program return-value is 0 - The value that PostQuitMessage() gave */
return messages.wParam;
}


/* This function is called by the Windows function DispatchMessage() */

LRESULT CALLBACK
WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) /* handle the messages */
{
case WM_DESTROY:
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
break;
/* for messages that we don't deal with */
return DefWindowProc (hwnd, message, wParam, lParam);
}

return 0;
}

/* fonction afficher */
void afficher(char* phrase, HWND hWnd)
{
RECT r;
r.top = 10; r.bottom = 350; r.left = 0; r.right = 350;
DrawText(
GetDC(hWnd), // un device context sur la fenêtre
phrase, // texte à afficher
strlen(phrase), // longueur du texte à afficher
&r, // pointeur vers le rectangle donnant l'endroit (et la taille) où afficher
DT_CENTER // centré
);

}
dimanche 15 février 2004 à 23:46:10 | Re : siouplait la charite pour un pov newbie

ymca2003

Le problème vient de CreateWindowEx qui renvoi NULL (la création de la fenêtre échoue) et pour l'instant je vois pas pourquoi...
lundi 16 février 2004 à 00:25:11 | Re : siouplait la charite pour un pov newbie

ymca2003

voici la résolution de qqs problèmes :

1) la WndProc :


LRESULT CALLBACK
WindowProcedure (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_DESTROY:
PostQuitMessage (0);
break;
}
return DefWindowProc (hwnd, message, wParam, lParam);
}


(dans ton code, DefWindowProc n'était jamais appelé)

2) init Direct3D :
cx, cy : taille.
hWnd : handle fenêtre.
bFullScreen : vrai pour plein écran , faux pour mode fenetré
LPDIRECT3D8 m_lpD3D;
LPDIRECT3DDEVICE8 m_lpD3DDevice;


m_lpD3D = Direct3DCreate8(D3D_SDK_VERSION);
// propriétés d'affichage actuelles
D3DDISPLAYMODE d3ddm;
m_lpD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);

// initialisation structure D3DPRESENT_PARAMETERS
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(D3DPRESENT_PARAMETERS));
d3dpp.BackBufferWidth = cx;
d3dpp.BackBufferHeight = cy;
d3dpp.BackBufferFormat = d3ddm.Format;
d3dpp.hDeviceWindow = hWnd;
d3dpp.Windowed = !bFullScreenMode;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;

if(bFullScreenMode)
{
d3dpp.SwapEffect = D3DSWAPEFFECT_FLIP;
d3dpp.BackBufferCount = 2;
}
else
{
d3dpp.SwapEffect = D3DSWAPEFFECT_COPY;
d3dpp.BackBufferCount = 1;
}

// création object Direct3DDevice
m_lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, D3DCREATE_SOFTWARE_VERTEXPROCESSING, &d3dpp, &m_lpD3DDevice);


3) boucle des messages

La fonction GetMessage attend qu'un message arrive => le else ne sera jamais excuter. Il faut faire :


if(PeekMessage(&messages, NULL, 0, 0, PM_REMOVE))
{
TranslateMessage(&messages);
DispatchMessage(&messages);
}
else
{
...
}


Avec tout ça normalement le prog devrai tourner...
lundi 16 février 2004 à 17:31:58 | Lumiere divine

seichettmorru

ALLELUIA !
comme je me sens petit
des complications?
beh y a mon sprite qui ne s'affiche pas enfin la je tombe dans la feignantise...
as u want


Cette discussion est classée dans : messages, wincl, hwnd, window, d3dpp


Répondre à ce message

Sujets en rapport avec ce message

Je debute: [ par phpman ] Bonjour,je debute avec devc++, quand je creer un nouveau projet il me génère le code d'une form windows:#include /* Declare Windows procedure */LRESUL Problème d'initailisation objet IDirect3DDevice9 [ par olivierpot2 ] Bonjour à tous,je débutes en c++ directx et j'avoue que j'ai un peu (beaucoup) de mal...Dans le code suivant je n'arrives pas à initilalisé la variabl probleme de compilation (débutant) [ par cddvdcopy ] je suis débutant, merci de m'éclairer !! ce code marche : #include #define ID_SFC 100 #define ID_RECHERCHE 200 #define ID_EXIT 300 Application [ par Arnauti ] Bonjour, je suis nul et j'ai presque jamais fait de C/C++. Enfin, si quelque truc sous dos. Mais j'aimerais créé une aplication mais pas sous dos. Al tjr aide applications windows [ par chinois57 ] je suis desoler de denouveau vous enbeteer avec sa mais je ne comprend pas comment afficher un message dans une fenetre windows applicatios j'utilise insertion d'une phrase [ par chinois57 ] ou doige mettre une phrase du style sa va#include /*  Declare Windows procedure  */LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); /*  C++ windows [ par notour ] bonjourj'ai réalyser un programme de cryptage de texte sous page DOS mais pour des raison pratique je souh couleur fond appli win32 [ par fredsor ] Salu a vous,Je créé une appli win32 sous devc++ en C.Je créé la fenetre avec CreateWindow, et j'aimerais que le fond soit blanc. Or l'appli se met dés Gestion optimisée du clavier avec l'API Win32 [ par Djazzyman ] Bonjour à tous !Je developpe des petits programmes Windows depuis peu sous Dev C++ 5 (version 4.9.9.2 beta).Jusqu'alors, je me contentais des simples


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales