cs_Rankin
Messages postés52Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention27 avril 2010
-
7 oct. 2009 à 12:41
cs_Rankin
Messages postés52Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention27 avril 2010
-
8 oct. 2009 à 22:31
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...
cs_Rankin
Messages postés52Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention27 avril 2010 8 oct. 2009 à 12:29
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...
BunoCS
Messages postés15476Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention 3 mai 2024103 8 oct. 2009 à 13:59
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Rankin
Messages postés52Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention27 avril 2010 8 oct. 2009 à 14:23
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 :)
BunoCS
Messages postés15476Date d'inscriptionlundi 11 juillet 2005StatutModérateurDernière intervention 3 mai 2024103 8 oct. 2009 à 14:42
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...
cs_Rankin
Messages postés52Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention27 avril 2010 8 oct. 2009 à 15:42
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 ;)
cs_Rankin
Messages postés52Date d'inscriptionlundi 29 mars 2004StatutMembreDernière intervention27 avril 2010 8 oct. 2009 à 18:49
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...