Boite de dialogue non créée

melkiorlenecrarque Messages postés 97 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008 - 11 janv. 2005 à 18:21
melkiorlenecrarque Messages postés 97 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008 - 21 janv. 2005 à 13:46
Bonjour,

voici le code foireux!! c'est le code de base que j'utilse pour créer des programmes à base de boite de dialogue, il marchait tres bien avant ma réinstallation de visual c++ 6, mais depuis, lorsque je lance le programme, il se coupe aussitot, la boite de dialogue ne se crée pas!Du coup la plupart de mes codes ne sont plus utilisables !!!

#include <windows.h>
#include "resource.h"


HINSTANCE hinst;
HWND hDlg;


// prototype des fonctions
BOOL CALLBACK AppProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam);


// fonction gérant les message concernant la boite de dialogue principale
BOOL CALLBACK AppProc(HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_INITDIALOG:
hDlg = hdlg;
break;
case WM_COMMAND:
switch(wParam)
{
case IDCANCEL:
EndDialog(hDlg,0);
}
default:
break;
}
return 0;
}


// fonction principale, c'est la premiere executée
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
hinst = hInstance;
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG), hDlg, AppProc);
return 0;
}

Peut etre un probleme de configuration de visual'Ou une faute dans le code dans mon modele utilisé par copier coller!

merci pour vos réponses,

melkior le necrarque

5 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
11 janv. 2005 à 19:00
Euh j'ai jamais mis de break pour le traitement des messages
J'ai toujours retourner la valeur 0 sauf pour WM_INITDIALOG auquel je retourne 1
Et sinon pour la fonction DialogBox( hinst, MAKEINTRESOURCE(...), hdlg, AppProc)
le HWND passé en paramètre ne doit pas t-il être celui de la fenêtre parent ? HWND_DESKTOP en loccurence
ta case IDC_CANCEL ne renvoi rien, faut dire c'est pas la cause de ton problème mais bon

Mais sinon j'pense que le prog est correct dans l'ensemble.
Essai ptete de compléter les arguments de ta fonction WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
Bref tu me tiens au courant ;)


void Aurevoir( void ); //Bonne journée
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
11 janv. 2005 à 19:03
Lol chui con !!!
J'ai même pas pris la peine de compiler la source. Chez moi il marche
Donc c'est pas le code...


void Aurevoir( void ); //Bonne journée
0
cs_Matt67 Messages postés 549 Date d'inscription samedi 6 septembre 2003 Statut Membre Dernière intervention 6 mars 2010 3
11 janv. 2005 à 20:44
Bonsoir,



DialogBox renvoi un int qui te permettera de voir l'erreur produite ...

hDlg n'est pas initialisé, tu devrais mettre NULL à la place...

Matt...
0
errikke Messages postés 59 Date d'inscription samedi 11 janvier 2003 Statut Membre Dernière intervention 15 mai 2006
20 janv. 2005 à 23:43
La procédure qui traite le message WM_INITDIALOG retourne généralement true, sauf si l'on
souhaite choisir nous-même le contrôle qui prend le focus (dans ce cas,
la fonction doit retourner false.) Elle ne doit pas se terminer par break sinon on obtient un
fonctionnement curieux ou aleatoire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
melkiorlenecrarque Messages postés 97 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 20 janvier 2008
21 janv. 2005 à 13:46
le code que j'ai posté plus haut marche enfin, le probleme venait du fait que la fenetre avec le style "child" !
mais cette solution ne fonctionne pas pour mes autres sources!!

voici une source foireuse:
http://www.cppfrance.com/code.aspx?ID=18979
0
Rejoignez-nous