Page 1 sur 1

Problême avec une fentre ouverte sur un autre fenetre

Publié : mar. 07/sept./2004 21:28
par LOULOU25
Le code suivant :

Code : Tout sélectionner

Procedure Affiche(libelle.s )
  If OpenWindow(0,0,0,370,100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Information ProdiCIC PLus V5.1.17") And CreateGadgetList(WindowID(0)) 
    SetWindowPos_(WindowID(), -1, 0, 0, 0, 0, #SWP_NOSIZE | #SWP_NOMOVE)
    If  LoadFont(1, "@MS arial", 10,#PB_Font_HighQuality | #PB_Font_Bold)
      SetGadgetFont(#PB_Default,FontID())   ; Set the loaded Arial 16 font as new standard 
    EndIf 
    ButtonGadget(1,160, 70, 60, 20, "&OK",#PB_Button_Toggle    ) 
    TextGadget(0, 10, 10,360,80,libelle) 
    
    Repeat  
      EventID.l = WaitWindowEvent() 
      Select EventID 
        Case #PB_EventCloseWindow 
          Break 
          
        Case #PB_EventGadget      ;Per Maus 
          Break 
          
      EndSelect
      
    ForEver    
    CloseWindow(0) 
  EndIf 
  
EndProcedure
Me fait perdre le focus sur la fenetre principale lorsque j'ai cliqué sur OK. En fait je voudrais envoyer un message à l'écran informant l'utilisateur du déroulement de la procédure, mais il semble que ceci contrarie ensuite la la lecture des fenetres.
Quelqu'un aurait-il une solution

Publié : mar. 07/sept./2004 21:34
par ZapMan
Sans le code qui gère ta fenêtre principale, il n'est pas possible de faire de test !
Les idées bêtes qui me viennent sont :
- vérifier que tu as bien un UseWindow(#FenetrePrincipale) qui s'éxecute aprés la fermeture de ta fenêtre secondaire
- utiliser MessageRequester au lieu de ta procédure

Publié : mar. 07/sept./2004 21:39
par LOULOU25
En fait si j'utilise Message Requester , la fenetre crée n'aura pas le focus en raison du programme qui tourne en premier plan et qui utilise autoitx.dll c'est la raison pour laquelle j'avais crée celà

Publié : mar. 07/sept./2004 21:42
par nico
Y a un truc de bizarre, car si tu fermes une fenêtre, automatiquement la première reprend le focus, chez moi pas de problème.T'as combien de fenêtres ouvertes?

Le code complet serait mieux!

:)

Publié : mar. 07/sept./2004 21:46
par LOULOU25
Je veux bien te filer le code mais il y a plus de 3000 lignes et en plus j'utilise un autre language de programmation qui s'appele Autoitx. Le connnais-tu ?
ce qui se passe exactement :
_ Lorsque j'envoie un message a l'aide de cette fonction et que je clique sur OK celà me géle l'écran
- A ce moment Autoix reprend la main et teste l'apparition d'une fenetre qui n'arrive pas et bloqie le programme,
- Lorsque j'enléve le message le programme continue sans générer aucun problême

Publié : mar. 07/sept./2004 22:19
par Le Soldat Inconnu
un petit usewindow(#fenetreprincipale) à la fin

et j'ai un doute affreux sur les constantes des fen ? celle-ci est à 0, les autres aussi ?

Publié : mer. 08/sept./2004 19:08
par LOULOU25
Le Soldat Inconnu a écrit :un petit usewindow(#fenetreprincipale) à la fin

et j'ai un doute affreux sur les constantes des fen ? celle-ci est à 0, les autres aussi ?
En fait il faut que j'exprime correctement mon problême. Je lance Pure Basic et dans le même temps lance la librairie Autoitx qui me sert a automatiser les entrées clavier. Mon problême de fenetre survient lorsque j'ai lancé un tiers programme dans autoitx en superposition de PureBasic et que j'ouvre une fenetre PureBasic. A ce moment là en fermant la fenetre le programme ne sait plus ou il se trouve et bloque la fenetre autoitx. Lorsque je casse le programme pure basic avec le gestionnaire de tache alors le programme lancé avec autoitx se dévérouille

Publié : mer. 08/sept./2004 22:19
par Le Soldat Inconnu
Alors la, je comprens plus rien ...
peut-être qu'une petite copie d'écran avec commentaires permmettrait d'éclairer ma lanterne (fait moi un dessin en gros :lol: )
parceque ton autoitx, ça me parle pas

Publié : jeu. 09/sept./2004 6:15
par LOULOU25
Le Soldat Inconnu a écrit :Alors la, je comprens plus rien ...
peut-être qu'une petite copie d'écran avec commentaires permettrait d'éclairer ma lanterne (fait moi un dessin en gros :lol: )
parceque ton autoitx, ça me parle pas
AutoItx est une dll qui permet de piloter à distance une application. Grace à cette dll tu peux automatiser complétement l'installation d'un logiciel car les fonctions incluses permettent de lire le titre d'une fenetre, de remplir automatiquement des champs de saisie, c'es l'équivalent spécialisé des fonctions Windows de PureBasic mais beaucoup plus puissante.
Je pense que mon problême devrait se résoudre via les threads, mais je ne suis pas assez costaud pour pouvoir le faire et je pense que toi , Soldat Inconnu tu peux me dépannner.
En clair je lance PureBasic sans ouverture de fenetre, une fonction de ma dll lance un programme quelconque et lui envoie des instructions (ex Send("!F4"). A un moment je veux envoyer un message d'erreur envoyé par PureBasic par dessus la fenetre du programme lance et c'est là que j'ais mon problême de gel d'écran car lorsque je clique sur OK la fenetre se ferme mais il semb le que je ne revienne pas sur le programme lancé mais sur PureBasic en tâche de fond.
Désolé si je ne suis pas clair mais je n'arrrive pas mieux a exprimer la chose.
Une url peux t-aider qui décrit Autoitx.dll : http://www.hiddensoft.com

Publié : jeu. 09/sept./2004 11:57
par ZapMan
Je compatis avec le Soldat. Franchement, c'est pas facile de t'aider sur ce coup là, à moins de passer 4 heures à dépiauter ton AutoIx, récupérer ton code et voir se qui se passe (et encore... 4 heures, je suis surement optimiste...)

Comme je n'ai pas le courage d'aller aussi loin, je vais juste te dire ce que me dit mon intuition : ton problème ne vient pas de ton programme PureBasic mais du reste.

Voilà, je ne sais pas si c'est vrai, et si ça l'est, je ne sais pas si ça peut t'aider mais j'aurais été au bout de mes ressources.

Bonne chance.