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++.
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)
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.
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.
Aussi, chez moi je bosse sous 2008 Express, donc il risque d'y avoir des différences. Mais pas trop grandes, j'espère.
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).
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.
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.
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?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager