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 :

SplashScreen avec Form2


Sujet :

C++/CLI

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Par défaut SplashScreen avec Form2
    Bonjour, malgré toutes mes recherches sur Google je n'arrive toujours pas a créer un Splashscreen pour mon application.
    Dans mon appli j'ai 2 Formulaires Form1 et SPL ,
    Dans Form1 j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include "SPL.h"
    #pragma endregion
    	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    				Form1::Hide();
    		 		SPL^ form = gcnew SPL();
    				form->Show();
    						 }
    Dans Form2:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	private: System::Void timer2_Tick(System::Object^  sender, System::EventArgs^  e) {
    	for (double dblOpacity = 1; dblOpacity > 0; dblOpacity += -0.05)
    	{
    	Opacity = dblOpacity;
    	Refresh();
    	System::Threading::Thread::Sleep(50);
    		 }
        this->Close();
    Les 2 Form s'affiche au démarrage mais je voudrai masquer temporairement Form1 pour ne laisser que la Form2 le temps de Timer1 qui est dans Form2.
    J'ai testé plusieurs methodes dont Form1::Hide(); mais impossible de masquer Form1.
    Merci de votre aide

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    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 487
    Par défaut
    Vous faite une attente active dans votre boucle et vous bloquez le thread graphique avec "System::Threading::Thread::Sleep(50);".

    Utilisez votre timer pour lancer plusieurs fois la mise à jour de votre Splash Screen et c'est au dernier appel que vous appelez "Close".
    Donc pas de "for" mais appels multiples à la méthode timer2_Tick.

    Votre Spash Sceen sent un peu le bricolage.

    http://www.reflectionit.nl/Articles/Splash.aspx

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Par défaut
    Pardon d'être novice mais je crains ne pas comprendre ce que tu me dis, aurais tu un petit exemple qui reprendrait mon mon SplashScreen de l'Espace
    Je sais sais du bricolage mais je ne suis pas encore en mesure d'en créer un vrais car je manque de pratique et de formation car je fais ça à titre perso en loisirs.
    Donc je fais à mon niveau
    Merci d'avance!!

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    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 487
    Par défaut
    Vous bloquez le thread graphique avec "System::Threading::Thread::Sleep(50);" donc votre affichage de l'application.

    Utilisez l'exemple du lien que je vous ai fourni.
    Il devrait contenir le code source si vous êtes curieux du comment c'est fait.

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    254
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 254
    Par défaut
    Merci pour le lien, mais il semblerai que la class SplashApplicationContext ne soit pas possible en c++ ou alors j'ai pas su trouver car j'ai implémenté dans toutes les formes possible mais toujours la même erreur:
    C2061: erreur de syntaxe*: identificateur 'SplashApplicationContext'


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SplashApplicationContext^ myContext  = gcnew SplashApplicationContext(gcnew Form1(), gcnew SplashForm(), 2000);
    Dans le lien ils remettent ce code mais avec une intervalle de 0 pour arrêter le timer, là je comprend pas ou enserrer cet arrêt du Timer , à la suite du précèdent dans Form1.h?
    Merci

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 487
    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 487
    Par défaut
    class SplashApplicationContext ne soit pas possible en c++
    Le C++/CLI permet de faire des choses que les autre langages .NET ne peuvent pas faire. Tout ce que peut faire un langage .NET est faisable en C++/CLI.

    C2061: erreur de syntaxe*: identificateur 'SplashApplicationContext'
    N'oubliez pas les références d'assemblies et les namespaces.
    SplashApplicationContext est dans le namespace "ReflectionIT.Windows.Forms".

    Dans le lien ils remettent ce code mais avec une intervalle de 0 pour arrêter le timer, là je comprend pas ou enserrer cet arrêt du Timer , à la suite du précèdent dans Form1.h?
    Jetez un coup d'oeil au source. Vous verrez que le fait de mettre 0 à la place de 2000, oblige le SplashSreen à se fermer lui-même.
    Essayez de comprendre un peu le code C# et vous pourrez faire la même chose en C++/CLI.
    Si vous ne voulez pas utiliser le code source C# pour en faire une assembly que vous utiliseriez directement, bien sûr.

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

Discussions similaires

  1. SplashScreen avec image splash dans themepack
    Par denamaf dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 11/09/2008, 08h40
  2. SplashScreen avec fondu
    Par lili2008 dans le forum Langage
    Réponses: 3
    Dernier message: 15/07/2008, 18h55
  3. SplashScreen avec progressbar
    Par JAVIR dans le forum AWT/Swing
    Réponses: 9
    Dernier message: 21/09/2007, 22h13
  4. Réponses: 3
    Dernier message: 22/06/2006, 17h39
  5. Réponses: 6
    Dernier message: 05/05/2006, 11h04

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