CreateDialog et resources

Signaler
Messages postés
47
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
9 juin 2004
-
Messages postés
1
Date d'inscription
mercredi 7 janvier 2004
Statut
Membre
Dernière intervention
7 janvier 2004
-
C simple, je veux que mon application Win32, affiche comme fenetre principale une boite de dialogue que j'ai fait avec le 'resource editor' et qui est inclue en ressource dans l'executable.

J'ai essayé CreateDialog, mais c'etait trop beau (et facile) pour marcher, car cette fonction, et toutes les autres semblables (CreateDialogParam, CreateDialogIndirect, etc) veulent une fenetre 'owner'. Or moi je veux que ce soit la fenetre principale de mon programme. et mettre hwndOwner=NULL sa marche pas non plus.

Donc voili voila, c tout simple la question, et si possible la reponse aussi (le but en fesant sa fenetre avec l'editeur de ressources c'est, entre autres, la simplicité non?)

--anthraxx

7 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
Les sources publiees servent a quoi ?
Tu regardes sur les miennes par exemple, tu auras ce que tu demandes ici a tout coup.
DialogBoxParam(...);
BruNews, ciao...
Messages postés
47
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
9 juin 2004

t'imagine bien que j'y avais pensé... j'ai vu ton code d'ailleurs
Mais voila, DialogBoxParam me renvoie -1...
Et GetLastError renvoie 1407, soit "Cannot find window class"

Une autre idée?

--anthraxx
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
et bien donne ce que tu mets dans WinMain, je n'ai jamais vu le systeme refuser de creer une dialogbox. On va trouver le probleme.
BruNews, ciao...
Messages postés
47
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
9 juin 2004

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, PSTR, int)
{
DialogBoxParam(hInstance, (LPCTSTR)IDD_CLIENTWND, 0, DlgProc, 0);
return 0;
}
Messages postés
47
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
9 juin 2004

je voulais dire:
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow)
{
DialogBoxParam(hInstance, (LPCTSTR)IDD_CLIENTWND, 0, DlgProc, 0);
return 0;
}
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
29
l'une ou l'autre c'est idem, encore que je prefere la mienne pour la clarte.
IDD_CLIENTWND tu es sur que valide ?
DlgProc correctement declare ?
Si prob persiste, envoie ton truc, on ira + vite et je te le retourne (VC++ j'espere).
bnutiles@wanadoo.fr
BruNews, ciao...
Messages postés
1
Date d'inscription
mercredi 7 janvier 2004
Statut
Membre
Dernière intervention
7 janvier 2004

C'est un peu vieux comme post; mais pour que tu puisses utiliser, createdialogboxparam comme fenetre principale tu dois enregistrer une classe via RegisterClass comme s'il s'agissait d'une fenetre normale puis tu la cree via Createdialogboxparama.
En ce qui concerne DialogBoxParamA, tu t'y prends mal, car
IDD_CLIENTWND est un nombre entier, et justement il y a un macro qui tombe a point nomme MAKEINTRESOURCE (cf msdn), donc :

DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_CLIENTWND), NULL, (DLGPROC) TaProc, NULL);

Voila A+