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

Lazarus Pascal Discussion :

Problème avec DoubleBuffered [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Invité
    Invité(e)
    Par défaut Problème avec DoubleBuffered
    Re-Bonjour.

    Dans une de mes applications, j'ai la simulation d'un compteur à tambours, obtenu par déplacement progressif (Timer interrupt) d'une image composée de la bande des chiffres derrière une fenêtre (la transparence gif fonctionne). Problème : si je n'active pas le double buffer, je vois des "flashs" ; et si je l'active, alors si je clique en dehors de la fiche pendant le déplacement de la "bande", toute l'application est réduite sur la barre des tâches, phénomène qui ne se produit pas avec le double buffer désactivé (et jamais sous Delphi ... )

    J'ai bien une solution bancale : ne pas laisser le logiciel se mettre sur la barre des tâches en cas de perte de focus, mais tout de suite le quitter "proprement" ! Faute de mieux ...

    Bug ?
    Dernière modification par Invité ; 14/07/2016 à 22h04.

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 142
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 142
    Par défaut
    Citation Envoyé par alberich Voir le message
    alors si je clique en dehors de la fiche pendant le déplacement de la "bande", toute l'application est réduite sur la barre des tâches, phénomène qui ne se produit pas avec le double buffer désactivé
    Jamais vu un tel comportement. Moi je chercherais plutôt du côté de ce qu'il y a dans les événements OnShow, OnActivate, OnDeactivate, etc. Y a p'têt' une blague planquée dans un coin..

  3. #3
    Invité
    Invité(e)
    Par défaut Vous avez dit "bizarre" ?
    Je ne vois pas ce qui pourrait être "planqué", car le phénomène disparaît si je désactive DoubleBuffered. A moins que ce ne soit encore une méchante interaction avec la dll externe que j'utilise et qui m'a aussi déjà joué quelques tours avec le MediaPlayer. Certes elle est open source (à condition d'avoir le courage de l'analyser ... en C ! ), mais toute l'usine à gaz Windows qu'il y a derrière ne l'est pas ...


  4. #4
    Rédacteur

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par alberich Voir le message
    Je ne vois pas ce qui pourrait être "planqué", car le phénomène disparaît si je désactive DoubleBuffered. A moins que ce ne soit encore une méchante interaction avec la dll externe que j'utilise et qui m'a aussi déjà joué quelques tours avec le MediaPlayer. Certes elle est open source (à condition d'avoir le courage de l'analyser ... en C ! ), mais toute l'usine à gaz Windows qu'il y a derrière ne l'est pas ...
    Bonjour,

    C'est (un peu) difficile d'aider quand on a si peu d'éléments . On devine que le travail se fait avec Windows (la dll), mais quelle est cette mystérieuse dll ? A quoi ressemble le programme ? Quels sont les gestionnaires d'événements renseignés (cf. Jipété) ? Le Doublebuffered ne fonctionne qu'avec Windows et n'est, à ma connaissance, pas connu pour créer des problèmes .

    Alors, on attend pour se prononcer ou... passer à autre chose .

    Cordialement,

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  5. #5
    Invité
    Invité(e)
    Par défaut Problème maintenant résolu
    En fait je lançais mon exe par double-clic dans l'explorateur et en cliquant à l'extérieur de ma fiche j'avais cliqué dans une partie "non vide" de ce même explorateur, sur la ligne d'un des fichiers ... Si je clique dans une partie vide (ou sur la barre des tâches) la perte de focus ne pose pas de problème. J'ai d'ailleurs réussi à reproduire le phénomène en désactivant le double buffer, celui-ci n'était donc pas en cause ...

    En exploitation mes logiciels sont lancés à partir du Menu Démarrer et je ne risque donc pas le "clic qui tue". Comme quoi on arrive très vite à faire des erreurs d'interprétation ! Pour information : la dll "suspecte" sert en fait à piloter un circuit d'interface USB, elle est fournie par le fabricant.

    Mais comme je suis quand même d'un naturel curieux (et vicieux), j'ai fait les essais suivants :
    - Caractéristiques de la "Form" : centrée sur l'écran, pas de bordure, "FsStayOnTop".
    - Avec n'importe lequel de mes programmes Lazarus, j'ai ce comportement bizarre de réduction sur la barre des tâches si je clique sur le nom d'un fichier quelconque dans l'explorateur.
    - Avec le programme initial utilisant le "compteur" mais écrit en Delphi 6 (et utilisant le composant HID Jedi), je peux cliquer où je veux, même sur le nom du exe s'il est en surbrillance, quand il y a mouvement ou non ... rien ne se passe, la fenêtre reste en place, il y a seulement l'indication de la perte de focus ! Idem pour la version que j'avais écrite en utilisant la dll. Enfin, j'avais un moment utilisé Delphi 3 (avec la dll, le composant HID ne fonctionne qu'à partir de la version 4, et sans le compteur car il n'y a pas de Doublebuffer) : idem à Delphi 6. Comprenne qui pourra ... Mais pour moi il y a quand même "un problème" lié à Lazarus lui-même !

    Désolé encore pour le dérangement ... car comme dit, EN PRATIQUE le problème ne se posera pas !
    Dernière modification par Invité ; 15/07/2016 à 08h09.

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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