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 :

Ouvrir une fenetre bloquante


Sujet :

C++Builder

  1. #1
    Membre à l'essai Avatar de Cooly
    Homme Profil pro
    Lead Web Frontend Developer @ LumApps
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lead Web Frontend Developer @ LumApps
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Ouvrir une fenetre bloquante
    Rebonjour a tous

    Alors voila je suis toujours sur mon projet (que je vous présenterai quand il sera terminé j'espere).
    Cet fois mon probleme vient de l'affichage des fenetre.

    J'ai un fichier de configuration pour mon logiciel ou sont enregistrées toute les infos importantes pour le déroulement du prog.

    Mais au premier lancement ce fichier n'existe pas, de plus l'utilisateur pourrai tres bien l'ouvrir à la main et le corrompre.

    J'ai donc fait une fonction qui vérifie si le fichier existe, et le si c'est le cas, si celui ci n'est pas corrompu.

    Jusque la sa marche.

    Donc si je detecte que mon fichier est inexistant ou corrompu, j'affiche un petit message pour dire qu'il va falloir taper la config, et pour ce faire, j'ai une fenetre (qui en l'occurence s'appelle configGen) ou je rentre toutes mes infos.

    Donc je lance mon programme, ma fenetre principal s'affiche et lance la vérification du fichier de configuration, et si c'est pas bon, je voudrai afficher ma fenetre de configuration, tout en bloquant le déroulement de ma fenetre principale parce que sinon elle me sort tout un paquet d'erreur avant que je puisse enfin taper ma config.
    j'ai bien sur essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    configGen->ShowModal();
    Mais sa ne me permet pas de bloquer le déroulement de l'autre fenetre.

    Si quelqu'un a une petite idée.

    Merci

    Cooly

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Juillet 2004
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2004
    Messages : 289
    Points : 635
    Points
    635
    Par défaut
    Salut,

    Peut-être que dans le constructeur de ta fenetre tu mets tous les Enabled des autres à false.

  3. #3
    Rédacteur/Modérateur
    Avatar de Trap D
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    4 942
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 4 942
    Points : 6 498
    Points
    6 498
    Par défaut
    Comment lances-tu cette fenêtre d'alerte ?
    Si tu es sous Windows tu as la possibilité d'utiliser la fonction :
    The WaitForSingleObject function returns when one of the following occurs:

    · The specified object is in the signaled state.
    · The time-out interval elapses.



    DWORD WaitForSingleObject(

    HANDLE hHandle, // handle of object to wait for
    DWORD dwMilliseconds // time-out interval in milliseconds
    );


    Parameters

    hHandle

    Identifies the object. For a list of the object types whose handles can be specified, see the following Remarks section.
    Windows NT: The handle must have SYNCHRONIZE access. For more information, see Access Masks and Access Rights.

    dwMilliseconds

    Specifies the time-out interval, in milliseconds. The function returns if the interval elapses, even if the object's state is nonsignaled. If dwMilliseconds is zero, the function tests the object's state and returns immediately. If dwMilliseconds is INFINITE, the function's time-out interval never elapses.
    "La haine seule fait des choix" - Koan Zen
    "Il ne faut pas être meilleur que les autres, il faut être meilleur que soi." Albert Jacquard
    "Ceux qui savent où ils ont posé leur parapluie ne sont pas alcooliques." - pgibonne.
    Faites du Prolog, ça vous changera les idées !
    Ma page Prolog
    Mes codes sources commentés

    Mon avatar : La Madeleine à la veilleuse de Georges de La Tour

  4. #4
    Membre à l'essai Avatar de Cooly
    Homme Profil pro
    Lead Web Frontend Developer @ LumApps
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lead Web Frontend Developer @ LumApps
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Sa paraissait etre une bonne idée que je me suis empressé d'essayer, mais sa ne marche toujours pas, et maintenant j'ai meme des erreurs d'écriture.
    J'essaye d'autre piste, je vous tiendrai au courant si je trouve comment

    Mais si quelqu'un d'autre a une idée, qu'il n'hésite pas

    Merci Captain_JS pour ta tentative :-)

  5. #5
    Membre à l'essai Avatar de Cooly
    Homme Profil pro
    Lead Web Frontend Developer @ LumApps
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lead Web Frontend Developer @ LumApps
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    J'ai essayer d'utiliser la fonction waitForMachin mais en fait je ne vois pas quel Handle je dois passer a la fonction
    Je dois lui passer le Handle de ma fenetre configGen qui me sert a entré la configuration, ou plutot celui d'un bouton qui permettrai de fermer la fenetre de configuration et donc d'indiquer que la config est fini

  6. #6
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut
    Bonjour,

    le ShowModal ne rend pas la main tant que la fenêtre conernée n'ait pas été fermée, donc ca devrait répondre à tes besoins.

    Est ce que tu affiches la fenêtre de config à partir de la fenêtre principale, ou bien dans un thread à part? Si c'est à partir du thread principal, il y a aucune raison que ca ne bloque pas l'exécution de ton appli. Essayes de faire un petit test dans une application à part et tu verras que ca marche.

    Sinon essayes de nous montrer le bout de code concerné.

    Bon courage
    "Don't think you are, know you are..." (Morpheus)

  7. #7
    Membre à l'essai Avatar de Cooly
    Homme Profil pro
    Lead Web Frontend Developer @ LumApps
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lead Web Frontend Developer @ LumApps
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    ben alors je vais essayer d'expliquer clairement mais c'est pas facile

    Lorsque je lance mon application, j'ai ma fenetre principale qui s'appelle config qui s'ouvre

    dans celle-ci, au tout debut de la fonction Create je fait sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    chargeMainConfDepuisFichier("config.inf");
    Cette fonction est chargé de vérifié si le fichier de configuration existe, si il existe, elle vérifié qu'il n'est pas corrompu, et si il n'est pas corrompu, charge mon fichier. Et sa elle le fait tres bien.
    Maintenant, si ce fichier est corrompu ou n'existe pas, dans ma fonction (apres mon else .....) je fais sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Application->MessageBox("Ceci est le premier lancement de cet utilitaire\nou le fichier de configuration est corrompu ou inexistant.\nVous allez devoir entrer la configuration.","Bienvenue",MB_OK);
        config->pasConfig = true;
    Et la c'est la fin de ma fonction.
    Je set donc une variable qui me permet de savoir si le chargement c'est fait correctement ou pas
    si ce chargement ne s'est pas fait correctement, je voudrai ouvrir ma feuille configGen tout en bloquant le reste de l'éxecution de ma premiere page, j'ai donc fait sa, juste apres l'appel a la fonction chargeMainConfDepuisFichier dans la fonction Create de ma premiere feuille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (pasConfig) { configGen->ShowModal(); }
    Bon voila pour sa
    J'éxecute et j'ai cette erreur qui ressort :
    Violation d'accès à l'adresse 0049809E dans le module 'surveillance.exe'. Lecture de l'adresse 000002EC.
    Voila si vous réussissez a m'aider.
    Pis si j'ai pas été clair dites le moi, j'essayerai de le refaire :-)

    [EDIT] C'est un ShowModal que je fais, pas un Show, j'ai corrigé dans mon bout de code [/EDIT]

    [EDIT2] PS : lorsque que je commente la ligne configGen->ShowModal, le logiciel ne me sort plus d'erreur de violation d'accès, j'ai juste mes erreur a propos de mes composant non configuré qui ressorte [/EDIT2]

  8. #8
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut
    Donc ton problème, si j'ai bien compris, c'est l'exception sur la fenêtre pasConfig, c'est ça?

    si c'est le cas, comment tu crées cette fenêtre? Si tu la crée dynamiquement vérifies que tu l'instancies bien. Si tu ne la crée par dynamiquement vérifie que dans les options du projet, cette fenêtre fait partie des Fiches créées automatiquement et non pas des fichiers disponibles.
    "Don't think you are, know you are..." (Morpheus)

  9. #9
    Membre à l'essai Avatar de Cooly
    Homme Profil pro
    Lead Web Frontend Developer @ LumApps
    Inscrit en
    Décembre 2004
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Lead Web Frontend Developer @ LumApps
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2004
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Trouvé
    Salut!
    sa y est j'ai trouvé d'ou venai mon problème.

    En fait l'exception venait du fait que j'ouvrai ma fenetre modale configGen dans la fonction Create de ma premiere fenetre, ce que aparrament on a pas le droit de faire.

    J'ai donc mis l'apelle a ma fenetre bloquant dans la fonction Show de ma premiere fenetre, tout en m'assurant que si la config n'était pas correcte, les composant configurable de ma fenetre ne soit pas chargé. Et la tout marche correctement

    Merci de votre aide

    Cooly

    (Si vous voulez plus de détails sur comment j'ai fait faites moi signe.)

  10. #10
    Membre averti
    Avatar de Neo41
    Inscrit en
    Janvier 2003
    Messages
    241
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 241
    Points : 403
    Points
    403
    Par défaut Re: Trouvé
    Bonjour,

    Citation Envoyé par Cooly
    Salut!
    sa y est j'ai trouvé d'ou venai mon problème.

    En fait l'exception venait du fait que j'ouvrai ma fenetre modale configGen dans la fonction Create de ma premiere fenetre, ce que aparrament on a pas le droit de faire.
    juste pour explication: tu n'as pas le droit de créer la fenêtre config dans le create de ta forme principale parce que la fenêtre config n'est pas encore instanciée (dans l'ordre de tes fenêtres tu dois avoir forme principale et puis forme coinfg).

    Bon courage
    "Don't think you are, know you are..." (Morpheus)

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

Discussions similaires

  1. ouvrir une fenetre secondaire depuis 1 bouton
    Par TheBlackReverand dans le forum MFC
    Réponses: 7
    Dernier message: 16/03/2006, 22h02
  2. [C#][debutant]Ouvrir une fenetre
    Par lalilo dans le forum Windows Forms
    Réponses: 12
    Dernier message: 06/01/2006, 15h40
  3. [New User] Ouvrir une fenetre en popup
    Par toure32 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/12/2005, 19h36
  4. [Eclipse 3.1] ouvrir une fenetre avec un bouton
    Par Nanoulov dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 01/08/2005, 13h33
  5. [C#] ouvrir une fenetre "bloquante"
    Par Johan31 dans le forum ASP.NET
    Réponses: 6
    Dernier message: 26/02/2004, 11h48

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