Bordure de fenetre non transparente apres un AnimateWindow ... sniff

Résolu
hydargos Messages postés 8 Date d'inscription vendredi 6 septembre 2002 Statut Membre Dernière intervention 26 mars 2008 - 25 mars 2008 à 17:37
hydargos Messages postés 8 Date d'inscription vendredi 6 septembre 2002 Statut Membre Dernière intervention 26 mars 2008 - 25 mars 2008 à 23:33
Bon, comment expliquer un truc simple sans trop compliquer.... hummmm


plantage de décors:

J'ai créé une boite de dialogue principale en utilisant AnimateWindow pour avoir un beau fondu... ça marche super bien. J'utilise en plus un manifest pour avoir le style XP... ça marche super bien.
En fait, tout fonctionne bien sauf que.... :

lorsque ma fenetre a finis son fondu et qu'elle est pleinement visible, les bords de la fenetre laissent aparaitre du noir. En fait, les BORDER de la fenetre ont la bonne couleur, mais a l'extérieure de celle-ci, j'ai environ une bande d'un pixel noir qui entoure ma fenetre, en utilisant ShowWindow, cette bande est transparente, et pendant l'AnimateWindow elle est aussi transparente, c'est après l'AnimateWindow que la chtite bande aparait. C'est moche, et je ne sais pas d'ou ça peut venir.

je récapitule:
ShowWindow: fenetre normale (extérieur des bords transparent)
AnimateWindow (pendant fondu): fenetre normale (extérieur des bords transparent)
AnimateWindow (après fondu): fenetre anormale (extérieur des bords avec bande d'un pixel noire)

si quelqu'un a une piste pour résoudre ce problème, je suis preneur... en attendant je continue a chercher...

7 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
25 mars 2008 à 21:24
Ce qui est inquiétant c'est que même en déplacant la fenetre, ca ne résoud pas le problème (pas une simple question d'affichage).
J'ai essayé d'appeler GetWindowRgn après le AnimateWindow, et ca me retourne ERROR

Par contre, si on redimentionne la fenêtre, le coin noir disparait.
On peut donc appeler SetWindowPos, mais si on met la même taille, ca ne change rien (il faut une taille différente et la ca marche).

Sinon, le mieux serait sans doute de forcer une région (je pense que c'est un bug de la fonction AnimateWindow, qui supprime carrément la région de la fenetre), mais le problème est de trouver cette région (on ne peut pas la récupérer avant car la fenetre n'est pas visible).

_____________________________________
Un éditeur de ressources gratuit pour Windows
3
hydargos Messages postés 8 Date d'inscription vendredi 6 septembre 2002 Statut Membre Dernière intervention 26 mars 2008
25 mars 2008 à 19:13
ajout screenshot:

avec ShowWindow: code: ShowWindow + UpdateWindow

après AnimateWindow: AnimateWindow + UpdateWindow
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
25 mars 2008 à 19:15
Tu as essayé d'envoyer un WM_NCPAINT à ta fenetre?

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
hydargos Messages postés 8 Date d'inscription vendredi 6 septembre 2002 Statut Membre Dernière intervention 26 mars 2008
25 mars 2008 à 19:24
je viens d'essayer, cela ne change rien.... :(
merci quand meme ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_jfrancois Messages postés 482 Date d'inscription vendredi 26 août 2005 Statut Membre Dernière intervention 5 décembre 2009 2
25 mars 2008 à 21:31
On peut donc appeler SetWindowPos, mais si on met la même taille, ca ne change rien (il faut une taille différente et la ca marche).


Et en faisant 2 SetWindowPos() pour changer/rétablir la dimension originale ?

Jean-François
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
25 mars 2008 à 21:49
Ca marcherait, c'est juste que je trouve pas ca super beau (enfin normalement un redimentionnement de 1 pixel ne devrait pas se voir a moins de le chercher vraiment)

_____________________________________
Un éditeur de ressources gratuit pour Windows
0
hydargos Messages postés 8 Date d'inscription vendredi 6 septembre 2002 Statut Membre Dernière intervention 26 mars 2008
25 mars 2008 à 23:33
bah, suite a vos remarques (merci ;)  ), j'utilise un MoveWindow juste après l'UpdateWindow, j'ajoute juste 1 pixel, c'est invisible et ça fonctionne...
Je suis trop novice pour trouver une autre méthode....
Merci de vos remarques, en fait, ma fenetre n'est pas resizeable et je n'avais donc pas remarqué que ça disparaissait lors d'un redimentionnement...
Bon, vais me coucher, demain j'ai TP d'application réparties (durdur en java chui un boulet, pire qu'en C)... corba, rmi ... pfff

a+ si je survis lol

et merci encore...
0
Rejoignez-nous