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

Visual C++ Discussion :

Débutant Windows Forms


Sujet :

Visual C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 57
    Points : 41
    Points
    41
    Par défaut Débutant Windows Forms
    Bonjour,

    Je débute dans le monde Visual C++ 2008, côté windows forms, et j'ai 2 questions de débutant.

    1°) Comment toucher (d'une partie quelconque du programme) une form déclarée dans le main sous la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	HelpCible^ aide = gcnew HelpCible;
    	aide->Hide();
    Je voudrais faire l'équivalent d'un aide->show().

    2°) Pour initialiser le texte présent dans une combobox, le générateur fait une ligne du type this->CBoxCible->Text = L"Texte" donc avec un System::String ^
    Quel est le cast à apporter si on veut initialiser ce champ à partir d'un std::string
    J'ai tenté String(chaine.c_str()) mais c'est insuffisant ...
    Merci à vous

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    1) il te faut garder une référence pour y accéder (ou au pire, une variable globale mais c'est rarement nécessaire)

    2) tu peux aller voir dans la faq C++/CLI : http://dotnet.developpez.com/faq/cpp...age=conversion

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 57
    Points : 41
    Points
    41
    Par défaut
    Merci pour les réponses.
    Pour le point 2, le lien que tu proposes répond parfaitement à la question et du coup ce problème est résolu (et j'ai un lien de plus dans mes favoris).

    Pour le point 1, pourrais-tu être plus clair SVP ?
    Ou bien, plus sûrement, c'est à moi de l'être.
    Je voudrais faire un truc tout bête.

    Une form principale qui réagit à la touche F1 pour afficher un écran d'aide (lui-même s'effaçant grâce à un bouton).
    La majorité des exemples que j'ai consulté réalisent l'instantation de la fenêtre d'aide dans le code correspondant à l'appui de la touche (KeyUp) et considère le problème clos. Aucune précaution lors de la création.
    Je suppose donc que la manoeuvre de la touche F1 plusieurs fois provoque la création de multiples fenêtres.
    Je souhaitais donc créer à la fois la fenêtre principale et la fenêtre d'aide dans le main, et faire suivre l'instation de la fenêtre d'aide d'un hide().
    Le code lors de l'appui de la touche F1 deviendrait alors juste un show() et l'appui sur un bouton OK ferait un hide().

    A priori est ce que ce mode de fonctionnement est logique ou pas ?
    Si c'est oui, je cherche donc, depuis le code du KeyUp de la form principale à appeler la méthode show() d'une autre fenêtre que je ne sais pas comment toucher.
    Et je ne vois pas trop comment "garder une référence pour y accéder" (sauf bien sûr avec une apparemment "diabolique" variable globale)

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    pourquoi ne pas utiliser une variable membre à ta classe ?

    disons que tu as ta form1, tu déclares en variables membres ta form d'aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ref class Form1
    {
        private:
             MaFormAide ^formAide;
        // plein d'autres choses
     
        void AppuiF1()
        {
             if (formAide == nullptr)
                formAide = gcnew MaFormAide();
             formAide->Show();
        }
    };
    et quand tu recois la touche F1, tu affiches la form d'aide, et si la form n'est pas encore instanciée, tu la crées

    ou un truc du genre ...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 57
    Points : 41
    Points
    41
    Par défaut
    Merci, c'était a peu près le fonctionnement que je tentais, mais mon NULL était naze (ton exemple me donne la bonne réponse), le gcnew n'affiche pas la form et la tentative de show() me crache des insanités à l'exécution (Une exception non gérée du type 'System.NullReferenceException' ...).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		if ( e->KeyCode == Keys::F1 ){
    			//Fenêtre d'aide modale
    			//if (aide == NULL)
    				HelpCible^ aide = gcnew HelpCible;
    			//aide->Show();
    Bref, le code managé c'est pas mon truc (sauf à perdre un temps fou pour faire 3 lignes de code)

    Merci beaucoup.

    Edit : crotte de caniche, un HelpCible^ en trop .. stupide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Windows Form se connectant à un service web
    Par Marc22 dans le forum Services Web
    Réponses: 4
    Dernier message: 22/12/2009, 22h13
  2. [Débutant]C# de windows form a une application web
    Par Rasiel-ao dans le forum Windows Forms
    Réponses: 5
    Dernier message: 24/12/2007, 11h54
  3. [debutant VC++ et C++] Windows form et OPENFILENAME
    Par Le Scandinave dans le forum MFC
    Réponses: 5
    Dernier message: 08/03/2005, 15h31
  4. [C#] windows form et ComboBox
    Par telynor dans le forum Windows Forms
    Réponses: 9
    Dernier message: 12/11/2004, 18h17
  5. [VB.NET] windows form traits
    Par DG JohnJohn dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2004, 15h05

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