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++Builder Discussion :

Splash screen dans un thread?


Sujet :

C++Builder

  1. #1
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par défaut Splash screen dans un thread?
    Salut, j'ai une petite question pour vous. J'espère que vous pourrez m'aider. Je cherche à faire un splash screen au démarrage de mon application. Cette appplication utilise une base de données a laquelle on doit se connecter au démarrage.

    Je sais comment faire un splash screen, ne me renvoyer pas à FAQ

    Dans la mon splash screen j'ai une Progress bar avec Marquee. Le problème est que la barre ne bouge pas lorsque la Form est affiché. Donc je pense que l'utilisation de Thread serais ici approprié pour laisser mon splash screen avoir un peu de CPU et laisser l'initialisation se faire en même temps.

    Présentement je n'ai pas trouvé de solution pour ouvrir une Form dans un Thread. J'ai essayer d'utiliser Sinchronyse, mais sa ne semble pas fonctionné. J'ai vue deux autres post qui semblait avoir le même problème, mais ils n'ont pas été résolu:
    Si vous avez une idée, n'hésiter pas à la mettre ici.

    Merci!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 18
    Par défaut
    Salut,
    Effectivement je pense qu'il faut que tu utilises un synchronize dans ton thread pour appeler une fonction sans paramêtre qui raffraichira ton splash screen. Par exemple comprenant l'évolution de la barre de defilement, et le raffraichissement de ta fenêtre avec la fonction repaint.
    Par contre tu dois déclarer ton splash screen comme d'écrit dans la FAQ, et créer un thread dans le create de ta première fenêtre par exemple. Et que tu arrêtera à la destruction de ta fenêtre spash.
    Mais ton thread ne doit pas contenir d'affichage graphique en soit: "Form".
    J'espère que ça t'aidera car j'ai pas testé

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2003
    Messages : 288
    Par défaut
    Oui, comme le dit Samed il ne faut pas faire appel aux objets graphiques du thread principal dans un thread (sauf à passer par Synchronize mais dans ce cas le thread perd bcp de son attrait et surtout de sa fluidité).
    Seul le thread principal doit avoir accès aux fenêtres.

    Par contre un moyen élégant - et thread safe - de piloter les fenêtres à partir d'un thread est d'utiliser l'API (PostMessage), mais ça ne fonctionne que dans le sens thread=>fenêtres, car les threads VCL n'ont pas de boucle de message.
    Dans l'autre sens il reste Synchronize

    Donc tu peux ouvrir ta fenêtre à partir du thread principal, puis la piloter par PostMessage à partir du thread.

    Yarp
    www.senosoft.com

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

Discussions similaires

  1. Splash screen dans une App FMX
    Par alves1993 dans le forum Composants FMX
    Réponses: 12
    Dernier message: 07/11/2014, 13h12
  2. Splash Screen dans un projet dialog based
    Par 3aychoucha dans le forum MFC
    Réponses: 2
    Dernier message: 27/09/2012, 11h26
  3. gauge dans une splash screen
    Par lassmust dans le forum Delphi
    Réponses: 1
    Dernier message: 10/07/2006, 10h24
  4. [C#] Comment creer un splash screen en thread
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 11
    Dernier message: 19/06/2006, 15h51
  5. Réponses: 5
    Dernier message: 21/03/2006, 11h11

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