Erreur fatale de windows à l'exécution d'un prog win32

fireuo Messages postés 55 Date d'inscription dimanche 22 février 2004 Statut Membre Dernière intervention 17 août 2006 - 16 mai 2006 à 04:30
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 - 17 mai 2006 à 03:32
Cela m'est deja arriver. Je fais une fenetre de base avec l'API windows et quand j'ai tout fini je test et j'ai une erreur fatal de windows (Envoyer le rapport d'erreur, etc...). Juste avant j'ai eux un probleme avec le wParam. Il disait qu'elle n'était pas déclarer. C'est arrenger (je ne sais pas pourquoi ). Mais la je ne peu même plus compiler mon prog sans l'erreur de window.

Je vous laisse le code :

#include <windows.h>
//#include "main.h"


LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);


HWND hWnd;


const HBRUSH hCouleur_Jaune = CreateSolidBrush(RGB(255,255,0));
const HBRUSH hCouleur_Blanche = CreateSolidBrush(RGB(255,255,255));
const HBRUSH hCouleur_Cyan = CreateSolidBrush(RGB(0,255,255));
const HBRUSH hCouleur_Bleu = CreateSolidBrush(0xFF0000);
const HBRUSH hCouleur_Noir = CreateSolidBrush(RGB(0,0,0));
const HBRUSH hCouleur_Vert = CreateSolidBrush(RGB(0,0xFF,0));
const HBRUSH hCouleur_Rouge = CreateSolidBrush(RGB(255,0,0));
const HBRUSH hCouleur_Orange = CreateSolidBrush(RGB(255,150,0));


HBRUSH hTransparent = static_cast <HBRUSH> (GetStockObject(HOLLOW_BRUSH));
HBRUSH hCouleur_Gris = static_cast <HBRUSH> (GetStockObject(GRAY_BRUSH));


HBRUSH hBackground = hCouleur_Jaune;


static char szClassName[ ] = "Fenêtre Windows simple";


int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpcmdLine, int nCmdShow) {
WNDCLASSEX wincl;
wincl.hInstance = hThisInstance;
wincl.lpfnWndProc = WindowProcedure;
wincl.hbrBackground = hBackground;
wincl.style = CS_HREDRAW | CS_VREDRAW;
wincl.lpszMenuName = szClassName;
wincl.cbSize = sizeof (WNDCLASSEX);
wincl.hIcon = LoadIcon (NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon (NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
wincl.lpszMenuName = NULL;
wincl.cbClsExtra = 0;
wincl.cbWndExtra = 0;


if (RegisterClassEx(&wincl) == false)
return 0;
else {
MessageBox(hWnd, "La class est belle et bien enregistrer.", "Information de service", MB_OK);
}


hWnd = CreateWindowEx (0, szClassName, "Fenêtre simple", WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 644, 475, HWND_DESKTOP, NULL, hThisInstance, NULL);
ShowWindow (hWnd, nCmdShow);
MSG messages;


while (GetMessage (&messages, NULL, 0, 0)) {
TranslateMessage(&messages);
DispatchMessage(&messages);
}


return messages.wParam;
}


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


return 0;
}

Si quelqu'un a une réponse je serais vrm heureux :P

Merci !

2 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
16 mai 2006 à 22:41
La classe de ta fenetre n'a pas de nom. Rajoute:
 wincl.lpszClassName = szClassName;

___________________________________________
Les plus grands esprits trouvent toujours une solution
0
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
17 mai 2006 à 03:32
Salut,
En plus, il est préférable de mettre les appels à la fonction CreateSolidBrush() dans ton WinMain juste avant la déclaration et l'initialisation de ta WNDCLASSEX. Il faudra aussi libérer les HBRUSH avec DeleteObject() avant le dernier return.
0
Rejoignez-nous