Quels langages maitrises-tu?
Car d�j� sous Visual 6, il y a deux fa�ons principales de faire un programme avec une bo�te de dialogue:
- Avec Microsoft Foundation Classes (MFC), une biblioth�que dont la prise en main peut �tre difficile surtout si l'on ne sait pas comment �a marche en-dessous. C++ uniquement.
- Sans MFC, avec les fonctions compatibles C de Windows. Plus verbeux, pas orient� objet (tu moins � la base), mais plus simple � comprendre. C ou C++.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Salut,
As tu au moins regard� les liens qui t'ont �t� fournis ici ?
oui j'ai vu bien sure mais visuel c++ 2008 express �dition veut pas s'installer sur
mon windows sp2 j'ai trouver cette version qui marche ,
merci j'attends votre aide
Dans ce cas, choisis entre les deux chemins que je t'ai propos�s: C�t� clair ou c�t� obscur? (Je ne te dirais pas lequel est lequel)
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
je suis encore en d�but donc ne rend pas la tache difficile![]()
on commence par ce que tu veut ou bien par le chemin que tu ma�trise
plus car j'ai beaucoup de questions et des grand projet a faire et je cherche
un bon fr�re pour m'aider
Merci encore
on commence par le 1 �re le�on je vous attend
m�me c'est tr�s dure je suis pr�t compte sur moi a 100 %
OK, alors on va faire sans MFC, avec un code compilant aussi bien en C qu'en C++ (on se limitera donc au sous-ensemble de fonctionnalit�s communes aux deux langages), car je suis habitu� au C et changer en C++ est fastidieux sous Visual 6.
- Tu dois faire un projet de type "Win32 application", qu'on va appeler "ProjTuto".
- Choisis l'option "A simple Win32 application", tu obtiendras un projet comprenant trois fichiers et un ReadMe.txt.
- On va commencer par un simple hello world: Rajoute cette ligne dans la fonction WinMain():
Code C : S�lectionner tout - Visualiser dans une fen�tre � part MessageBox(NULL, TEXT("Bonjour!"), TEXT("Message de Sayler"), MB_OK);- Apr�s, compile ton programme:
- Visual studio a une particularit�, c'est que stdafx.cpp doit �tre compil� avant le reste. Pour ne pas t'emb�ter avec �a, on va demander � Visual de compiler tout le projet plut�t que de s'occuper individuellement de nos fichiers.
- Utilise la commande Build->Build ProjTuto.exe. Par d�faut la touche de raccourci pour �a est F7. Tu as peut-�tre aussi une ic�ne pour �a dans la barre d'outils, selon les options. Tu devrais obtenir la sortie suivante:
Code X : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8 --------------------Configuration: ProjTuto - Win32 Debug-------------------- Compiling... StdAfx.cpp Compiling... ProjTuto.cpp Linking... ProjTuto.exe - 0 error(s), 0 warning(s)- Tu peux alors ex�cuter ton Hello World avec la commande Build->Execute ProjTuto.exe. Le raccourci par d�faut est Ctrl+F5, et l'ic�ne dans la barre d'outils est un point d'exclamation rouge sombre.
On passera � une vraie bo�te de dialogue dans la prochaine le�on. En attendant, pose des questions sur tout ce que tu ne comprends pas.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Alors, ton exe est dans le r�pertoire Debug de ton projet.
Si tu veux pouvoir l'utiliser sur d'autres ordinateurs, il te faudra le compiler en Release avant.
Pour changer entre Debug et Release, tu as la commande Build->Set Active Configuration. Mais tu peux aussi avoir une liste d�roulante dans la barre d'outils, plus rapide � utiliser.
Faire une bo�te de dialogue est plus compliqu�. M�moriser convenablement des donn�es dedans est compliqu� �galement, c'est pourquoi nous commencerons par la m�thode simple. Mais tu vas devoir attendre quelques heures, car je rentre chez moi et j'ai un temps de transports assez long, sans parler du diner.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Aussi, chez moi je bosse sous 2008 Express, donc il risque d'y avoir des diff�rences. Mais pas trop grandes, j'esp�re.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
OK mon fr�re on a tous temps merci encore je vais essayer d'ex�cuter
seulement mon exe sur un autre pc,
A+
bon a propos de exe j'ai fait un copie coller sur flash disk de exe seulement
que j'ai trouver dans debug et j'ai lancer sur un autre pc il marche
sans complication
mon autre pc m�me le visuel c++ n'est pas installer et ca a marcher
j'ai refait l'exemple :
Remplacer Par :
Code : S�lectionner tout - Visualiser dans une fen�tre � part MessageBox(NULL, TEXT("Bonjour!"), TEXT("Message de Sayler"), MB_OK);
ca donne la m�me r�sultat
Code : S�lectionner tout - Visualiser dans une fen�tre � part MessageBox(0,"Bonjour!","Message de Sayler",0);
m�me la button ok je le voi pourtant n'est pas indique comme dans le 1 ere
exemple
Merci j'attends votre commentaire et un nouveau le�on comment cr�e une
form1 avec le visuel c++ et ajouter des boutons,des labels ....
merci a demain fr�re
�a compile sans les TEXT(), parce que par d�faut Visual 6 ne compile pas en Unicode. Mais si on met les TEXT() d�s le d�but, on n'aura pas � changer le code le jour ou l'on voudra porter l'application.
Pour le z�ro, c'est parce que MB_OK vaut z�ro justement. Mais il existe d'autres constantes pour MessageBox(), avec diff�rents effets.
Pour utiliser une bo�te de dialogue en Win32, il y a deux choses principales � faire:
- Cr�er la bo�te de dialogue en tant que ressource du programme
- Faire le code qui qui contr�le la bo�te de dialogue (on appelle �a la "Dialog box procedure", ou DialogProc)
Pour cr�er la bo�te de dialogue sous Visual 6, il y a apparemment des pi�ges, mais je crois avoir trouv� une proc�dure "safe": D'abord, il faut ajouter un script de ressources au projet: Project -> Add to project -> New -> choisir resource script et le nommer "ProjTuto.rc".
Tu devrais voir une fen�tre contenant juste un dossier, vide. D'un clic-droit sur l'arri�re plan, tu devrais avoir un menu avec les options "Insert" et "Import" : Clique sur Insert.
Une bo�te de dialogue apparait, contenant une liste sur la gauche et des boutons � droite. Clique sur "Dialog" dans la liste et fait OK: Une bo�te de dialogue presque vide apparait, te voici dans l'�diteur de bo�tes de dialogue de Visual. Sauvegarde. La suite un peu plus tard (peut-�tre demain matin, car l� sans Visual 6 sous les yeux je ne suis plus s�r de moi).
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Alors, pour la suite:
D'un clic-droit sur le projet ProjTuto (dans l'onglet "FileView"), choisis l'option Add files to project. Normalement, dans le dossier du projet, un fichier nomm� resource.h vient d'appara�tre. Ajoute-le au projet. Tu peux regarder dedans par curiosit� (il doit contenir un #define IDD_DIALOG1 avec une valeur), mais ne le modifie pas: L'�diteur de ressources en a besoin.
Pour faire simple, on va ajouter notre code directement dans ProjTuto.cpp. Il est temps d'�crire une DialogProc basique, qui fermera notre bo�te de dialogue si l'on clique sur un bouton:
� chaque fois qu'il se passera quelque chose sur la bo�te de dialogue (on appelle �a un "message", cette fonction sera appel�e automatiquement. Avec ce code, on laisse le syst�me traiter tous les messages, sauf celui qui nous int�resse: Le clic sur un bouton (en r�alit�, WM_COMMAND agit aussi pour d'autres contr�les, mais pour l'instant on n'a que des boutons donc �a n'est pas grave). Si la bouton se termine, on ordonne la fin de la bo�te de dialogue.
Code C : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 BOOL CALLBACK TutoDialogProc( HWND hWnd, //[in] Handle de fenêtre de la boîte de dialogue UINT uMessage, //[in] N° de message. WPARAM wParam, //[in] Valeur dépendante du message LPARAM lParam //[in] Valeur dépendante du message ) //Retourne TRUE si la fonction a traité elle-même le message. { INT_PTR ret = TRUE; switch(uMessage) { case WM_COMMAND: //Clic sur un bouton EndDialog(hWnd, 42); break; default: //Indique qu'on n'a pas traité le message, //il faut donc que le système le fasse pour nous. ret = FALSE; } return ret; }
Tu remarqueras le param�tre de type "HWND": C'est ainsi que Windows identifie toutes les fen�tres (une bo�te de dialogue est une fen�tre d'un type particulier). Pour finir la bo�te de dialogue, on doit passer ce m�me handle � la fonction EndDialog().
Note: C'est l� qu'on voit un des probl�mes de Visual 6: Tu vois le type de retour BOOL? Sur tout syst�me r�cent, �a devrait �tre INT_PTR � la place. Mais Visual 6 ne l'accepte pas et gueule, donc on est oblig� de mettre BOOL jusqu'� ce qu'on ait un Visual plus r�cent qui marche.
� pr�sent, il reste la touche finale: Utiliser notre bo�te de dialogue.
Pour commencer, ajoute #include "resource.h" juste en-dessous de l'autre #include. Puis, remplace l'appel � MessageBox() par ceci:
Tu peux voir que ce code fait � la fois r�f�rence � la proc�dure de boite de dialogue et � son ID de ressource.
Code C : S�lectionner tout - Visualiser dans une fen�tre � part DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, TutoDialogProc, 0);
Compile et ex�cute, la bo�te de dialogue devrait appara�tre, et se fermer quand tu cliques n'importe quel bouton.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Une petite touche � propos de la valeur 42 qu'on passe � EndDialog: Modifie l�g�rement ton WinMain pour retourner la valeur retourn�e par DialogBoxParam. � la fin, tu devrais avoir un code ressemblant � ceci:
� pr�sent, on va ex�cuter le code dans le debugger avec la commande Build -> Start Debug -> Go (raccourci: F5).
Code C : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 // ProjTuto.cpp : Defines the entry point for the application. // #include "stdafx.h" #include "resource.h" BOOL CALLBACK TutoDialogProc( HWND hWnd, //[in] Handle de fenêtre de la boîte de dialogue UINT uMessage, //[in] N° de message. WPARAM wParam, //[in] Valeur dépendante du message LPARAM lParam //[in] Valeur dépendante du message ) //Retourne TRUE si la fonction a traité elle-même le message. { INT_PTR ret = TRUE; switch(uMessage) { case WM_COMMAND: //Clic sur un bouton EndDialog(hWnd, 42); break; default: //Indique qu'on n'a pas traité le message, //il faut donc que le système le fasse pour nous. ret = FALSE; } return ret; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int ret = DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, TutoDialogProc, 0); return ret; }
L'affichage de Visual devrait changer, et la bo�te de dialogue appara�tre. Ferme-l�. L'affichage de Visual devrait redevenir normal, et tu devrais voir du texte dans la fen�tre de sortie de Visual. Les deux derni�res lignes devraient ressembler � ceci:
Le "code 42" est celui qu'on a pass� � EndDialog(), retourn� par DialogBoxParam(), retourn� par WinMain()!
Code X : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 The thread 0x1234 has exited with code 42 (0x2A). The program 'D:\...\ProjTuto\Debug\ProjTuto.exe' has exited with code 42 (0x2A).
C'est l'heure des questions � pr�sent, jusqu'� la procha�ne le�on.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Bonjour ,
merci pour votre simple explication j'ai fait ce que vous m'avez demandez
j'ai pu ajouter a mon programme "DIALOG1"
il y a par d�faut deux bouton (Ok) et ( Cancel) dans DIALOG1
J'ai ajouter comme vous voyer dans la photo un bouton1 que je renommer
Developpez.net et que je souhaite lui donner une fonction d'ouvrir notre page
de forum ...
j'attends votre prochain le�on comment faire de lui un exe comment donner
des fonctions ....
Merci
Mon fr�re tous est bon seulement que j'ai pas ajouter
parce que ca me donne un erreur sans elle c'est ok
Code : S�lectionner tout - Visualiser dans une fen�tre � part DialogBoxParam(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, TutoDialogProc, 0);
mon exe maintenant est une "form1" ou il y a 2 bouton ok et cancel
et les 2 fonctionne parfait quand je click sur un des 2 le programme se ferme
j'attends la suite ,merci
exemple: on ajoute une bouton et on le donne une commande d'ouvrir une
page web notre forum si vous voulez bien
Quelle est l'erreur avec DialogBoxParam?
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager