Pb RegisterClassEx

Signaler
Messages postés
346
Date d'inscription
jeudi 7 avril 2005
Statut
Membre
Dernière intervention
26 mars 2012
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Bonjour a tous

voila mon pb


quand je lance mon programme ( donc .exe créer sans probleme)

j'ai cette messagebox qui s'affiche


if (RegisterClassEx (&fenetre1) == false)
{
MessageBox(hWnd, "Probleme", "info", MB_OK);
return 0;
}


voila je ne comprend pas du tout pourquoi ca fait ca

merci d'avance

11 réponses

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
On écrit plutot if(!RegisterClassEx(&fenetre1)), c'est plus joli
C'est que ta structure fenetre1 est mal remplie
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
déja on teste pas comme ça...

On utilise l'opérateur !



if(!RegisterClassEx(&fenetre1))

{

MsgBox...

return 0;

}

et s'il fait ça c'est parce que tu as mal renseigné ta classe de fenêtre

Montre nous ça :)

void Aurevoir( void ); //Bonne journée
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Et Vecchio passe en tête au classement constructeur !!!

Fichtre sapristi

void Aurevoir( void ); //Bonne journée
Messages postés
346
Date d'inscription
jeudi 7 avril 2005
Statut
Membre
Dernière intervention
26 mars 2012

voici ma classe

WNDCLASSEX fenetre1;

fenetre1.cbSize = sizeof(WNDCLASSEX);
fenetre1.style = CS_HREDRAW | CS_VREDRAW;
fenetre1.lpfnWndProc = WindowsProc;
fenetre1.cbClsExtra = 0;
fenetre1.cbWndExtra = 0;
fenetre1.hInstance = hInstance;
fenetre1.hIcon = NULL;
fenetre1.hCursor = NULL;
fenetre1.hbrBackground = hBackground;
fenetre1.lpszMenuName = "Menu";
fenetre1.lpszClassName = szClassName;
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
utilise ça avant memset(&fenetre1, 0, sizeof(WNDCLASSEX);

comme ça tout les champs renseignés seront mis à 0

Mais s'il te met une erreur c'est quand même parce que tu n'as pas tout rempli

Il doit manquer hIconSm

void Aurevoir( void ); //Bonne journée
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
tout les champs non renseignés***

void Aurevoir( void ); //Bonne journée
Messages postés
346
Date d'inscription
jeudi 7 avril 2005
Statut
Membre
Dernière intervention
26 mars 2012

ok merci je sais pas trop a quoi correspond la ligne memset(&fenetre1, 0, sizeof(WNDCLASSEX); mais j'en ai pas eu besoin. suffit simplement de renseigner tout les champs.
j'ai donc rajouter hIconSm et ca marche.

est ce comme ca pour toutes les class ?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Joky, si tu remplis tous les champs un par un, ca ne sera a rien de tout mettre à zero au debut
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Bé oui mais s'il est trop fénéant comme moi pour tout remplir surtout ceux qui servent pas trop, bé ca sert lol xD

même avec une structure WNDCLASS où y'en à moins j'lutilise donc euh vala lol :D

void Aurevoir( void ); //Bonne journée
Messages postés
346
Date d'inscription
jeudi 7 avril 2005
Statut
Membre
Dernière intervention
26 mars 2012

ok merci je vai me renseigner sur memset()

++
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Tu peux utiliser ZeroMemory