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

Composants VCL Delphi Discussion :

[RX 10 / Windows 10.1] StatusBar - ParentForm DoubleBuffered


Sujet :

Composants VCL Delphi

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut [RX 10 / Windows 10.1] StatusBar - ParentForm DoubleBuffered
    Bonjour à tous,

    J'ai récemment installé la dernière mise à jour majeure de Windows 10 (Anniversary update). Depuis, mon application rafraîchit assez mal le StatusBar présent dans la fenêtre principale.
    J'ai réussi à reproduire le problème dans un nouveau projet qui est disponible en attaché.

    Voici ce que j'ai constaté :

    - Lorsque la fenêtre contient un StatusBar avec un MainMenu.
    - Lorsque les Panels du StatusBar sont en mode psOwnerDraw
    - Lorsque la propriété DoubleBuffered de la Forme est à true

    L'évènement OnDrawPanel du StatusBar n'est appelé que pour le Panel[0].
    Dans mon exemple, il y a 4 Panels. Seul le premier est rafraîchit.

    - Si je remets la propriété Doublebuffered à False
    ou
    - Si j'enlève le MainMenu de la Forme
    ou
    - Si j'exécute sur une version antérieure de Windows
    Ca fonctionne !


    Avez-vous déjà eu ce problème ? Comment le résoudre tout en conservant le DoubleBuffered de la MainForm à True et Windows 10.1 (+ versions antérieures) ?

    Dans l'exemple ci-joint, le comportement normal est l'affichage d'un chiffre aléatoire dans les 4 panels

    Merci d'avance.
    Images attachées Images attachées   
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 126
    Points
    13 126
    Par défaut
    Doublebuffered ne devrait plus être requis depuis Vista.
    La gestion de l'affichage a évolué et le Desktop Window Manager (DWM) se charge lui-même de faire du double buffering.

    Autres infos ici.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Bonjour Andnotor,

    Merci pour ces informations. Mais je constate une différence dans l'affichage quand on active ou pas le DoubleBuffered au niveau du flickering et ce même sur Windows Vista, seven, 8 , 10.

    Je ne suis donc pas très convaincu par l’efficacité de DWM. Peut-être y-a-t-il une configuration Windows pour gérer le DoubleBuffered...

    Dans mon cas, rien n'explique que tout fonctionne bien en Windows 10 et plus en Windows 10.1.

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 126
    Points
    13 126
    Par défaut
    Citation Envoyé par portu Voir le message
    Peut-être y-a-t-il une configuration Windows pour gérer le DoubleBuffered...
    Il faut voir la compatibilité déclarée au niveau du manifest.

    Citation Envoyé par portu Voir le message
    Dans mon cas, rien n'explique que tout fonctionne bien en Windows 10 et plus en Windows 10.1.
    Quelles sont les modification apportées à DWM, là est la question

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    Bon je viens de trouver une solution sans trop comprendre la cause... mais bon, le résultat est là
    Il suffit de mettre la propriété ParentDoubleBuffered du StatusBar à false ainsi la propriété DoubleBuffered à false également.

    En tout cas, merci pour ces informations. J'ai appris de nouvelles choses

    Excellente journée.

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

Discussions similaires

  1. Window sans TitleBar mais avec StatusBar
    Par Gaaaga dans le forum Flex
    Réponses: 1
    Dernier message: 24/04/2008, 18h13
  2. Documentation gratuite sur l'API Windows, COM, DCOM, OLE, etc.
    Par Community Management dans le forum Windows
    Réponses: 1
    Dernier message: 16/11/2006, 15h28
  3. Centrer une fenêtre ouverte avec window.open et statusbar
    Par Michaël dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/01/2006, 13h07
  4. Programme de boot qui passe la main à Windows
    Par Bob dans le forum Assembleur
    Réponses: 7
    Dernier message: 25/11/2002, 03h08

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