Bordure de fenetre non transparente apres un AnimateWindow ... sniff [Résolu]

Signaler
Messages postés
8
Date d'inscription
vendredi 6 septembre 2002
Statut
Membre
Dernière intervention
26 mars 2008
-
Messages postés
8
Date d'inscription
vendredi 6 septembre 2002
Statut
Membre
Dernière intervention
26 mars 2008
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
8
Date d'inscription
vendredi 6 septembre 2002
Statut
Membre
Dernière intervention
26 mars 2008

ajout screenshot:

avec ShowWindow: code: ShowWindow + UpdateWindow

après AnimateWindow: AnimateWindow + UpdateWindow
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Tu as essayé d'envoyer un WM_NCPAINT à ta fenetre?

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
8
Date d'inscription
vendredi 6 septembre 2002
Statut
Membre
Dernière intervention
26 mars 2008

je viens d'essayer, cela ne change rien.... :(
merci quand meme ;)
Messages postés
482
Date d'inscription
vendredi 26 août 2005
Statut
Membre
Dernière intervention
5 décembre 2009

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
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
8
Date d'inscription
vendredi 6 septembre 2002
Statut
Membre
Dernière intervention
26 mars 2008

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...