Une appli console suffit-elle pour faire afficher des dialogue sans MFC ??

Signaler
Messages postés
57
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 septembre 2008
-
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011
-
Bonjour,
je crois que le titre du sujet est assez explicite ^^;

Je suis encore newbie en C++ et j'essais de démarrer sans les MFC (sur les conseils de certains d entre vous ~~" )
Je voulais savoir quelle type de nouvelle application C++
il fallait choisir avec Visual Studio .NET 2002
pour pouvoir afficher nos propre fenêtres ...

pour l'instant je m entraine en mode console
mais je suis pas sur que ca soit le bon type d'appli
pour creer des dialogues...

Je me trompe ?

10 réponses

Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
En effet il y a le mode console et le mode GUI.
Pour ce qui est de ton choix de ne pas utiliser les MFC, je suis tout a fait d'accord avec toi.
Cependant qi tu débutes en programmation, mieux vaut commencer par le C et ensuite aller vers le C++.

En ce qui concerne la création de dialogs, le mieux a faire et de ne passer par aucun des types de projets proposés par le Wizard de Visual Studio.
Tu crées simplement un nouvel espace de travail vierge et tu y ajoutes au fur et a mesure tes fichiers (*.cpp, *.h, *.rc, *.res,...).

Si tu veux un exemple simple de création de dialog sans rien d'autres, je peux t'en envoyer un, mais tu en trouveras aussi sir le site.

Shell
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

Oui oui, oublie les MFC c'est ennuyeux pour le transport sur d'autres ordis (DLL en masse dans mon cas :(( )et perso, je te dirais, que c'est pas programmer ^^ !
Tiens vala un petit DialogBox() tout simple ac appel et gestion de procédure...

/* a mettre dans ton fichier .rc (c un exemple) */

PROGRESS DIALOG DISCARDABLE 20, 20, 150, 40
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Nowel - Analyse en cours..."
FONT 8, "MS Sans Serif"
BEGIN

LTEXT "Analyse virale en cours...", -1, 5, 5, 120, 8
PUSHBUTTON "Annuler", ID_ANNULER, 50, 20, 40, 14

END

// fin

/* ds un fichier .h */

LRESULT CALLBACK ProgressProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) {

switch (message) {

case WM_INITDIALOG:

// instructions de démarrage de boit de dialogue...
break;

case WM_CLOSE:
EndDialog(hDlg, 0);
break;

case WM_COMMAND: // si c une touche de menu...

switch (LOWORD(wParam)) {


// ce que tu ve ici :)

}

default:

return false;

}
}

// fin

/* dans main... */

DialogBox(NULL, "PROGRESS", hwndOwner, (DLGPROC) ProgressProc);

// fin

voila voilou, tu men donnera des nouvelles!! :-)

Genda67, à votre service !
Messages postés
57
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 septembre 2008
1
Whaaa !
la rapidité des réponses !!!
(truc de fou lol je viens a peine de poster le message !)
Merci enormement !!!

DeAtHCrAsH >>
Oui alors en fait ce que j ai fait c'est démarrer un nouveau projet "console" mais "empty" du coup le .cpp j ai du en créer un vierge moi même .... Ca peut marcher comme ça aussi ?
En fait je debute pas totalement , je fait du C# a la base depuis pas mal de temps...
mais c'est plus aussi marrant qu'au debut alors j'essais le C++ ^^ ..

Gendal67 >> Merci beaucoup pour ta source
je vais l essayer sur le champs !
je vous dis ce que ca donne apres !!

merci beaucoup à vous deux !!
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Oui ta méthode est la bonne.
Tu crées le ptojet e,pty et tu y ajoutes tes fichiers.

Sinon ne prend pas l'exemple de dialog de Gendal67, il est érroné.
Donne ton mail je t'envoie le code minimal pour créer un dialog.

Shell
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

Euh, comment ça il es t erroné ?? tu veux répéter ?? je t'en mettrais moi des érronés, chez moi ça marche nikel !! alors ? il est ou ce blem , dis moi puisque t'es si intelligent ??

Genda67, à votre service !
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
Si intelligent ?
Merci de faire mon éloge a ma place (:

WM_INITDIALOG doit retourner 1!
...
case WM_INITDIALOG:

return 1;
...


Puis aussi il ne faut pas déclarer ta fonction de CallBack de type LRESULT, ce n'est pas faux mais il vaut mieux un BOOL.

Je te rappellerais que ce n'est pas parceque un programme marche qu'il n'est pas faux.

Shell
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

:) Je préfère quand tu m'expliques comme tu viens de le faire ! Parce que dire que c'est erronné comme ça, sans rien dire d'autre, je trouve pas ça très sympa...moi j'essaie juste d'aider... et je viens depuis 2jours (ou 2-3 jours de +) à peine de commencer à apprendre les boites de dialogue...donc dsl de ces petits trucs qui manquent au programme...j'essayer juste t'aider...

Genda67, à votre service !
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
2
No souci c'etait pas méchant ce que je disais ;)

Shell
Messages postés
57
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
11 septembre 2008
1
Re ,

Bon bha j'ai essayé le code , mais j ai encore quelques erreurs...
pour l'instant , ca se barre en sucette à cause de LRESULT et de CALLBACK ...
je dois pas les utiliser comme il faut,
je prend compte de ton post DeAtH,
hey Gandal67 t'emballes donc pas lol , moi je le trouve très bien ce bout de code !!
Je tente de corriger ce que j'ai mal tapé (ou mal compris ^^)
et je vous dis si ça marche ...

Merci encore !
désolé de vous faire perdre du temps pour des aneries pareil
-_-"
Messages postés
627
Date d'inscription
mercredi 16 juin 2004
Statut
Membre
Dernière intervention
24 juillet 2011

noublie pas d'include windows.h ! ;-)) et de définirr le cas échéant ton projet en projet WIn32 (GUI)
:-P

Genda67, à votre service !