Fenetre de dialogue et mot de passe [Résolu]

Signaler
Messages postés
52
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
27 avril 2010
-
Messages postés
52
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
27 avril 2010
-
Salut à tous !

Je suis en train de développer une appli qui me permet de contrôler mes connexions à différents réseaux. Il n'y a pas de fenêtre visible, juste une icone dans la barre des tâches avec un menu associé.
J'utilise VS 2005. J'ai simplement créé un "Projet Win32".

Or maintenant je suis confronté à un problème : j'ai étoffé mon choix de commandes possibles et je souhaiterais protéger l'exécution de certaines d'entre elles par un mot de passe.
Comment gérer l'affichage d'une fenêtre de dialogue avec un champ texte, et comment récupérer ensuite la valeur de ce champ dans mon appli ?

Je n'ai pas trouvé comment faire en rajoutant un "dialog" dans mon fichier RC, ni en ajoutant une fenêtre (si j'ajoute une fenêtre à mon projet, je ne sais pas l'afficher).

Avez-vous des pistes à me proposer ou des tutos sur les dialogues ? J'en ai trouvé un certain nombre mais je n'arrive pas à trouver de solution valable...

Merci à vous !

9 réponses

Messages postés
15032
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
94
La fonction GetDlgItemText() te permet de récupérer le texte du composant graphique dont tu connais l'ID


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
15032
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
94
Hello,
Tu devrais peut-être passer en mode "projet win32 application", ce serait plus simple pour afficher tes dialogs


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
52
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
27 avril 2010

Je n'ai pas ce choix dans la liste des possibilités pour un nouveau projet. Si je choisis par exemple "Application Windows Forms" en CLR, c'est très simple de gérer les fenêtres, mais le code que j'ai fait avant ne marche pas, je me fais jeter sur tous les include...
Messages postés
15032
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
94
Pardon, je me suis embourbé. Je voulais dire "Projet Win32", ce que tu semble avoir fait.
Je reprends donc depuis le début....ok.
Quand tu dis:
Je n'ai pas trouvé comment faire en rajoutant un "dialog" dans mon fichier RC, ni en ajoutant une fenêtre (si j'ajoute une fenêtre à mon projet, je ne sais pas l'afficher).
Où coinces-tu exactement?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
52
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
27 avril 2010

Oui je n'ai pas été très clair.
Je vois deux possibilités pour faire ce que je veux :
1) l'ajout d'une fenêtre au projet. Projet -> Ajouter élément -> Windows Form. J'ai l'éditeur graphique, je peux faire ce que je veux OR je ne sais pas comment l'appeler et l'afficher depuis mon programme principal, ni lui fournir des variables à afficher, ni récupérer la valeur du mot de passe saisi dans un champ texte.
Je suppose que pour la création il faut enregistrer la classe et faire un CreateWindow() ?

2) faire un dialog du style de la boîte "about" qui est proposée par défaut dans mon nomprojet.rc. Là encore, je peux éditer la fenêtre graphiquement, mais je ne sais pas comment passer des paramètres et récupérer des valeurs saisies : si je crée un bouton par exemple je ne peux pas définir le code associé à un clic : si j'essaie de définir un évènement j'ai une fenêtre d'ajout de classe qui s'ouvre (je ne comprends d'ailleurs pas bien pourquoi).

Je ne sais pas si j'ai été un peu plus explicite et si tu auras plus d'idées. J'imagine que la solution n'est pas bien compliquée, mais je n'ai pas l'habitude de faire du C++ avec GUI... et ça se sent :)
Messages postés
15032
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
12 mai 2021
94
Ok, je vois.
Alors, oublie la 1ère solution: cela mélange de l'API et du CLR, c'est pas bon
La 2e méthode est la bonne. Mais pour ce faire, il faut y attacher une procédure de message, plus communément appelé WndProc() ou DlgProc().
Pour la création de la fenetre: soit CreateWindow() soit DlgBoxParam()


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
52
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
27 avril 2010

C'est bien ce qu'il me semblait pour la première solution. Je vais tenter ma chance avec la seconde en y attachant une procédure WndProc() et je reviens en cas d'échec ;)
Messages postés
52
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
27 avril 2010

Bon alors j'ai fait quelques recherches. J'ai créé un nouveau projet, ajouté un dialogue. J'ai associé son ouverture à un élément du menu de la fenêtre principale proposée par défaut, et j'ai créé la procédure de callback associé. Celle-ci reçoit bien les messages quand je clique sur un des boutons.
Merci pour m'avoir mis sur la piste.

Maintenant, il reste le problème de récupération de la valeur du champ texte que j'ai mis dedans : je ne vois pas du tout comment faire, le champ est de type EDITTEXT, j'ai son id, je voudrais construire un objet en utilisant MAKEINTRESOURCE(id) mais je ne sais pas quel objet construire...

Une piste ?
Messages postés
52
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
27 avril 2010

Super ! Merci beaucoup pour ton aide :)