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

Windows Discussion :

WS_EX_COMPOSITED et Tooltips


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 22
    Points
    22
    Par défaut WS_EX_COMPOSITED et Tooltips
    Bonjour,

    Je développe une application simple consistant en une fenêtre standard (créée par Visual C++ Express en faisant nouveau projet Win32), qui contient une rebar (REBARCLASSNAME), qui contient une toolbar (TOOLBARCLASSNAME) qui inclut notamment le style TBSTYLE_TOOLTIPS, le tout avec CreateWindow/Ex

    J'ai ajouté quelques boutons avec TB_INSERTBUTTON, tout va bien.

    Dans le WndProc, j'intercepte TBN_GETINFOTIP, pour afficher un tooltip spécifique à chaque bouton (un random pour mon test).

    Ca marche bien comme ça.
    Seulement, je vais avoir besoin de faire du custom draw dans la toolbar, et j'ajoute donc WS_EX_COMPOSITED à la fenêtre principale, et WS_EX_TRANSPARENT à la rebar et la toolbar (comme indiqué dans la doc).

    Et là, c'est le drame, les tootips ne s'affichent plus correctement. Ils sont bien placés, et de la bonne taille, mais le contenu n'est plus rafraîchi.
    De plus, il semble que ça plante quelque part, parce que je dois survoler d'autre boutons pour qu'il disparaisse (normalement ça le fait tout seul au bout de quelque secondes).

    Voilà, quelqu'un aurait-il une idée de ce qu'il se passe ? Ca fait des jours que je tourne ça dans tous les sens, et rien ne semble marcher totalement.

    Merci,
    K.

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    J'ai du mal à voir pourquoi ces styles sont nécessaire.
    Utiliser NM_CUSTOMDRAW seul ne suffit-il pas?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    Je fais tous les dessins avec customdraw, mais ça clignote comme un sapin de noël dès qu'il y a besoin de redraw (redimensionnement par exemple).

    Je dois préciser que je fais un truc que je souhaite compatible avec XP, j'ai moins de soucis avec Win7 qui semble plus doué pour tout ça.

    En faisant du pas à pas, je vois clairement l'effacement, puis le re-dessinage de chaque élément un par un.
    J'ai tenté, à tout hasard (oui le hasard n'est pas le meilleur ami du développeur ), d'intercepter WM_ERASEBKGND, de retourner 0 ou 1 pour voir, mais rien n'y fait vraiment.

    En fait, quand j'enlève le WS_EX_COMPOSITED à la fenêtre principale, et que je le mets à la rebar et à la toolbar, la fenêtre n'est pas redessinée lors du redimensionnement (et donc ça laisse une traînée à l'intérieur quand on agrandit).

    Pour tout dire, je ne comprends pas pourquoi les tooltips cessent de fonctionner avec ce style.
    J'ai tenté de regarder ce qu'il se passe avec le customdraw du tooltip, et en jetant un oeil aux messages TTN_POP et TTN_SHOW, mais rien de spécial n'est apparu .

    Edit: Je précise aussi que la toolbar a le style TBSTYLE_EX_DOUBLEBUFFER et que ça change bien rien.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ben, c'est bizarre, avec ces conflits...
    À ta place, je traiterais WM_ERASEBKGND en effaçant tout dans la fenêtre SAUF la rebar, ce sera déjà ça de moins qui clignotera.

    Peut-être aussi, supprimer les styles CS_VREDRAW et CS_HREDRAW, en choisissant toi-même dans WM_SIZE quelles parties de la fenêtre tu veux redessiner...

    ou encore, désactiver/changer complètement le redessinement de manière interne quand on fait glisser (WM_ENTERSIZEMOVE / WM_EXITSIZEMOVE)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 18
    Points : 22
    Points
    22
    Par défaut
    Oui, je crois que je vais ré-examiner mon custom draw.
    J'avais pensé qu'il se passait quelque chose de caché avec ce style WS_EX_COMPOSITED qui faisait que ça marchait bien sans clignoter. Mais il semblerait que ce soit plutôt mes étapes de custom draw qui sont pas terribles.

    Merci en tout cas pour ta réponse, le forum de MS est resté totalement muet à cette même question.

Discussions similaires

  1. [ToolTip] Problème avec le caractère "\n"
    Par thomas_strass dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 30/09/2004, 09h19
  2. ToolTips ou autre ?
    Par genki dans le forum MFC
    Réponses: 6
    Dernier message: 20/09/2004, 10h56
  3. [VB.NET] Binder ToolTip DataGrid
    Par sg-40 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 16/07/2004, 13h56
  4. Bouton d'activation/désactivation de tooltips
    Par bigboomshakala dans le forum MFC
    Réponses: 2
    Dernier message: 26/04/2004, 08h54
  5. [VB.NET] Tooltips dans un DataGrid
    Par seemax dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/04/2004, 14h16

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