IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

Gestion des forms en visual C++


Sujet :

C++/CLI

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Par d�faut Gestion des forms en visual C++
    Bonjour � tous!!

    Je voudrais savoir comment programmer la chose suivante:

    J'ai un projet winform C++ qui affiche une page (form1) au d�marrage et qui poss�de 2 boutons.
    Le bouton 1 ouvre une fen�tre comme
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    form2 ^mafenêtre_2 = gcnew form2();
    mafenetre_2->Show();
    Le bouton 2 ouvre une fen�tre comme
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    form3 ^mafenêtre_3 = gcnew form3();
    mafenetre_3->Show();
    la form3 poss�de elle aussi un bouton avec lequel je voudrais fermer "mafenetre_2".....et l� je s�che

    Alors s'il y a un as du visual C++ pour me faire avancer ce serait bien.

    Merci par avance

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    Ca sent d�j� l'architecture bancale.
    On n'est pas pr�s d'atteindre un mod�le MVC avec �a.
    Pour limiter la case, le plus simple est de sauvegarder dans form1 mafen�tre_2 et mafen�tre_3 comme champs (initialis� � NULL au d�marrage de form1).
    Lors de la cr�ation de l'une, on demande � l'autre de se fermer.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Par d�faut
    Bonjour bacelar

    Merci beaucoup que tu t'es d�j� int�ress� � ma question.
    Sur le plan architecture, je suis d'accord, c'est absolument "NAZE".
    Dans le fond, ma question est de savoir si l'essai que je voudrais faire est possible, a savoir si on peut fermer une form depuis un endroit du programme autre que celui qui a demand� l'affichage de la form. Le but est d'avoir � un moment donn� 3 forms en simultan� � l'�cran et de pouvoir en fermer une depuis une autre form. (C'est exp�rimental)

    Tu sais je ne fais que red�marrer dans ce puissant langage qu'est le visual C++, (comme j'ai pass� mon brevet de pilote j'ai du laisser tomber un peu)
    je ne suis qu'un tout petit et ridicule programmeur qui ne connait que le VB6 (on ne rigole pas) et en VB6 on peut atteindre toutes les forms et tout ce qu'il y a dessus depuis n'importe o�.

    Alors m�me si ce que je veux faire n'est pas bien, est-ce malgr� tout possible? et comment ?

    Merci

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    Ne prend pas mal mes remarques sur la qualit� de l'architecture. Elles sont l� pour bien indiquer que cela ne correspondra jamais � du code qui sera facilement maintenable dans le temps.

    Si c'est pour faire une simple d�mo, pourquoi pas, mais souvent les d�mos se transforme POC (proof of concept) puis en code pour un projet temporaire puis un code qui date de 30 ans.

    Il est tout � fait possible de faire en C++, comme dans beaucoup d'autres langages g�n�ralistes, les m�mes horreurs qu'en VB6.

    Tr�ves d'amabilit�s.

    a savoir si on peut fermer une form depuis un endroit du programme autre que celui qui a demand� l'affichage de la form
    C'est bien le genre de question montrant un probl�me de conception, mais oui, il est tout � fait possible de faire cela.

    Le but est d'avoir � un moment donn� 3 forms en simultan� � l'�cran et de pouvoir en fermer une depuis une autre form.
    C'est le m�me topo, mais oui, c'est possible.

    puissant langage qu'est le visual C++,
    La puissance, sans maitrise, n'est rien.

    en VB6 on peut atteindre toutes les forms et tout ce qu'il y a dessus depuis n'importe o�.
    Bon on va arr�ter de faire l'ayatollah du code mais si vous vous faite pincez avec ce code, je n'irais tout en bloc. (quoi, tous les pilotes ne font pas partie du MI6, on m'aurait menti)

    Regardes du c�t� des variables globales et de ses petites cousines que sont des membres statics publiques d'une classe.

    En gros, si vous n'avez que trois forms, vous les d�clarez comme des r�f�rences d'objet globales (hors de toutes classes) que vous initialisez en temps voulu.

    En mode "static" vous les d�clarez comme des membres "public static" d'une classe et vous les initialisez de la m�me mani�re.

    Si le nombre de form est arbitraire et que vous voulez vraiment avoir le m�me horrible comportement que VB6, vous cr�ez un membre public static de type Dictionnary ayant pour type de cl� une chaine de caract�re et comme type de valeur une form. Vous n'aurez qu'� ajouter vos forms apr�s leur cr�ation dans ce Dictionnary. Vous pouvez aussi opter pour une classe d�riv�e de Form qui fera cet affreux enregistrement de mani�re automatique dans son constructeur.

    Au faite, c'est la m�thode "Close" de la classe Form qui permet de fermer, m�me de l'ext�rieur, LA form (vu que ce n'est pas une m�thode static mais une m�thode d'instance).

    Sinc�rement, je pense que vous devez rapidement vous d�barrassez de vos mauvais reflexes de VBiste pour pouvoir concevoir rapidement du code maintenable par plus d'une personne pendant plus de 15 jours.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Par d�faut
    Pas de probl�mes, j'ai int�gr� ta premi�re r�ponse de fa�on tout � fait positive et constructive. Je comprends bien que l'on ne peut pas replacer un apprenti programmeur sur les bons rails en faisant des rondes jambes et des courbettes, et je suis d�j� bien content qu'une personne comme toi, qui est pragmatique et qui � de l'exp�rience m'ai r�pondu.
    Sinon, pour ta 2�me r�ponse, t'as encore bien r�pondu � mon faux probl�me (car je que j'avais derri�re la t�te n'est pas tr�s pro) t'as sorti le mot magique "variables globale", mais j'ai lu pas mal d'articles qui ne recommandent pas de tels usages.
    Et pour tout te dire, comme je me remets fraichement � la programmation, j'avoue que je me consid�re un peu comme un chien errant. Je veux laisser tomber le VBNET �a c'est s�r, et me consacrer � un autre langage. Par contre, aujourd'hui, il y en a pas mal. (C++, C#, java.....etc...etc) et plus je lis de forums, plus j'ai du mal � prendre une d�cision � savoir lequel prendre.
    J'h�site encore entre visual C++ manag� et C#. je vais peut �tre d�marrer sur les 2 en m�me temps, et voir lequel je vais laisser tomber en cour de route.
    Sinon tous les pilotes ne font pas parti du MI6, il y en a qui font aussi parti du FSB, CIA, DGSE, MOSSAD pour les principaux. En ce qui me concerne aucun de ces services n'a encore fait appel � moi

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 507
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 507
    Par d�faut
    Attention, j'ai tir� � boulet rouge sur VB6, pas sur VB.NET. Et j'ai tir� car vous utilisez une horreur de VB(non .NET) mais la qualit� du code est fonction du programmeur, pas du langage de programmation. Rien ne vous obligeait � utiliser cette fonction qui semble �tre pratique (et qui l'est pour une approche RAD, Rapid Application Developement) de recherche automatique des formulaires "Nomm�es" inh�rente aux langages dynamiques donc non ".NETiffiable" en VB.NET, C# ou C++/CLI.

    Tout programmer doit �tre polyglotte.

    Il doit choisir le langage en fonction du domaine d'ex�cution de la solution logicielle.
    M�me les langages dits g�n�ralistes ont des lacunes et des points forts (largement fonction des biblioth�ques associ�es).

    On peut tout faire avec n'importe quel langage, m�me des routines BIOS en ROM avec VB ou des macro Excel avec un macro assembleur.
    Mais c'est loin d'�tre optimum en temps de d�veloppement.

    Dans votre cas, si vous venez du domaine RAD (Rapid Application Developement) tel que le sugg�re VB6, je pense que vous devez commencer par un langage .NET dans le m�me domaine.

    VB.NET et C# sont les langages .NET les plus r�pandus dans ce domaine (soit avec les librairies WinForm, soit WPF).
    C++/CLI doit �tre r�serv� aux personnes venant de la programmation syst�me ou sur des projets utilisant lourdement des fonctionnalit�s manag�es ET non manag�es.

    Entre VB.NET et C#, je vous dirais de regarder du c�t� de C#, car il y a plus d'utilisateurs donc plus de support, et aussi, pour ne pas �tre tent� par de mauvaises habitudes VB6. Pour les bonnes (habitudes), VB.NET et C# sont tr�s similaires.

    Il n'y a pas de variables globales en C# mais il reste les membres et les constructeurs "static" pour impl�menter votre usine � gaz de r�cup�ration de formulaire par nom.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    35
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 35
    Par d�faut
    Merci encore de l'int�r�t port� � mon dernier message, et des conseils donn�s.

    Je pense aussi m'orienter vers c#, en me faisant un lavage du cerveau pour gommer les mauvaises habitudes prises (c'est vrais qu'en VB6 on peut programmer dans le ZIG et le ZAG) je vais donc tout remettre � plat pour �tre structur� dans ce langage nouveau pour moi.

    Personnellement (et c�t� boulot) je suis plut�t dans la programmation des automates dans lesquels toutes les variables sont "pr�cuites" et d'office globales.

    Donc en C# avant de coder je vais bien me documenter pour �tre m�thodique pour ensuite �crire mon premier "Hello world"

    Encore Merci et � bient�t (J'esp�re)

Discussions similaires

  1. Gestion des forms
    Par lasrevinu dans le forum C#
    R�ponses: 4
    Dernier message: 23/02/2010, 13h07
  2. Gestion des images sous Visual C++ MFC
    Par dot-_-net dans le forum MFC
    R�ponses: 3
    Dernier message: 28/06/2009, 18h45
  3. Gestion des Forms (fsMDIChild, fsnormal) etc
    Par BuzzLeclaire dans le forum D�buter
    R�ponses: 18
    Dernier message: 18/05/2009, 09h04
  4. R�ponses: 3
    Dernier message: 17/01/2008, 18h11
  5. [VB.NET]La bonne gestion des forms
    Par Wintermute dans le forum Windows Forms
    R�ponses: 11
    Dernier message: 13/01/2004, 16h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo