DÉFORMES TES FENÊTRES COMME SOUS VISTA!

cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 - 22 août 2006 à 12:17
Domohina Messages postés 1 Date d'inscription lundi 6 février 2012 Statut Membre Dernière intervention 31 mars 2012 - 31 mars 2012 à 11:56
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39215-deformes-tes-fenetres-comme-sous-vista

Domohina Messages postés 1 Date d'inscription lundi 6 février 2012 Statut Membre Dernière intervention 31 mars 2012
31 mars 2012 à 11:56
comment executer cette application.A l'aide
Alphaplus Messages postés 4 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 8 août 2009
8 août 2009 à 23:16
merci ^^
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
8 août 2009 à 23:13
WindowFX
http://www.stardock.com/products/windowfx/
tu peu avoir un aperçu rapide sur google Images
Alphaplus Messages postés 4 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 8 août 2009
6 août 2009 à 13:48
A ok autant pour moi j'avais pas compris sa bah tan pis alor ^^ merci quand mm de m'avoir aidé.

mais vous connaissez peut ètre un programme pour XP qui permet d'animer les fenètres lors de leur minimisation ou maximisation ect. si vous en connaissez dites moi le nom du ou des logiciels svp après j'avette de vous embeter ^^ merci
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
6 août 2009 à 09:17
Déjà c'est "Delphi" :p
Les animations ne seront présentes que sur les fenêtres que tu vas créer dans tes applications.
J'entends donc que tu vas créér des applications, des programmes, et ça avec Delphi.
Si tu ne programmes pas, delphi ne te servira à rien et ce code source non plus :/
Alphaplus Messages postés 4 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 8 août 2009
5 août 2009 à 23:46
merci de me répondre aussi vite ^^ en fait je n'ai pas de connaissances la dessus j'ai vu tout a l'heure qu'il fallait delfi alor j'ai pris delfi 6, je l'ai instalé mais maintenan je n'arrive a rien ... je ne veut pas trop vous déranger mais pourriez vous m'expliquer comment procéder en détail si c'est pas trop demander =) Merci
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
5 août 2009 à 17:40
Ah oui j'aurais dû demander ça en premier :-*)
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
5 août 2009 à 17:25
Salut alphaplus
Attention, ceci est un code source, ce code et donc ces animations ne fonctionnent que sur les applications que tu vas créer en delphi, ce n'est une sorte d'addon XP comme un TweakLike qui fera que toutes les fenetres XP seront ainsi animées.
Programmes-tu en delphi ?
a +
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
5 août 2009 à 16:59
Lorsque tu crées un nouveau projet, une nouvelle unité est crée automatiquement par Delphi (Typiquement, elle va s'appeler Unit1.pas). Au début de chaque unité, il y a d'abord la ligne:

unit Unit1;

Puis, juste en dessous:

uses
SysUtils, Windows, Forms, etc;

C'est cette ligne qui est appelée la clause "uses" en langage Pascal. Si mes souvenirs sont bons, pour que les animations soient activées, il te faut rajouter AnimatorManager à la liste juste avant le point-virgule (et avec une virgule pour la séparer du reste juste avant bien sûr). Donc, ça deviens:

uses
SysUtils, Windows, Forms, etc, AnimatorManager;

Théoriquement, il n'y a que ça à faire. Demande-moi si ça ne fonctionne pas.
Alphaplus Messages postés 4 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 8 août 2009
5 août 2009 à 16:39
bonjour, je vien de découvrir que l'on pouvait déformer les fenetre d'XP avec ce code source et ca m'interraisse mais le problem est que je n'arrive a m'en servir du tout.

je n'ai peut ètre pas trop ma place sur ce forum mais changer l'animation de mes fenètres m'interraisse beaucoup donc j'aimerais bien (si quelqu'un a le temps) que quelqu'un m'explique comment faire. (par exemple je ne sais pas ce que sont les uses et je n'arrive pas a effectuer une seul des action qui sont expliquées dans le tuto)

en esperant que quelqu'un ai le temps et l'envie de me répondre =) merci d'avance
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
22 nov. 2008 à 17:27
Pareil pour moi, j'ai D7.

Qu'entends-tu précisément par "ne fonctionne pas"?
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
22 nov. 2008 à 17:09
Il fonctionne, j'ai delphi7 !
speederman_ch Messages postés 3 Date d'inscription lundi 3 janvier 2005 Statut Membre Dernière intervention 22 novembre 2008
22 nov. 2008 à 16:49
Bonjour

Ce Source ne fonctionne pas sous delphi 7 !!
Y a t'il une explication à apporter.

merci.
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
16 juil. 2008 à 08:01
Thanks!
aminedelphi Messages postés 49 Date d'inscription samedi 26 janvier 2008 Statut Membre Dernière intervention 9 mars 2011
16 juil. 2008 à 02:44
very very Gooooooooood
niber2010 Messages postés 1 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 17 mars 2008
17 mars 2008 à 18:55
j'aimerais l'utiliser sur xp mais comment doit on faire une fois que le zip est téléchargé car il n'y a pas de fichier exe pour l'installer.
Avez vous la procédure?

Merci

Niber
randriano Messages postés 54 Date d'inscription vendredi 13 avril 2007 Statut Membre Dernière intervention 26 juillet 2011
19 oct. 2007 à 06:52
Bonjour tout le monde !

Tout simplement, c'est fantastique !!
J'avais déja songé à un programme pareil mais sans succès, je plantais déja dès l'imagination de la technique à prendre !! Et là, tu le réussis en un coup. Ca mérite des applaudissements !!
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
15 août 2007 à 13:27
Intéréssant :P,
Manque plus que tu le programme Forman :P.
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
15 août 2007 à 00:08
thanks!
getmeall Messages postés 1 Date d'inscription mardi 8 mai 2007 Statut Membre Dernière intervention 14 août 2007
14 août 2007 à 20:10
great
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
10 juin 2007 à 21:17
Non si c'est ça ta question, alors ça va :-D

La réponse est: oui c'est possible, mais ça demanderait du boulot. Vraisemblablement, la façon la plus naturelle de faire ça serait de créer un service qui se lance au démarrage. Celui-ci, dès qu'une nouvelle application est lancée, se charge d'y injecter une ch'tite DLL qui elle-même se charge de surcharger les WndProc des fenêtres de l'application de façon à intercepter le message WM_SHOW et d'y intercaller l'animation avant de rendre la main au comportement normal.

Eventuellement, l'injection pourrait se faire par l'intermédiaire d'un hook global (de cette façon, inutile de surveiller en permancence la liste des process et fenêtres). Il reste une autre difficulté technique: les animations qui utilisent OpenGl. En effet, un contexte opengl ne peut pas être partagé entre plusieurs applications. Il faudrait donc garder la partie OpenGl dans un programme serveur (typiquement le service qui se lance au démarrage) et lui envoyer les données pour qu'il trace lui-même l'animation.

Le danger d'un tel programme c'est qu'il peut rendre le système instable (on peut par exemple imaginer un driver opengl buggé qui fait bugger tout le système dès qu'une fenêtre s'ouvre). Il faudrait donc être extrèmement rigoureux dans la gestion des exceptions (et aussi de la mémoire par la même occasion).

Si j'ai le temps je le ferai un jour... si tu te sens tu peux commencer, mais je te préviens ça demande pas mal de boulot!
layann06 Messages postés 2 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 10 juin 2007
10 juin 2007 à 19:56
Encore bonjour, au risque de paraitre lourd ( je pense que c'est déjà fait), et de désespérer Forman (ça aussi c'est fait ^^), j'aimerai savoir s'il est possible d'appliquer les animations pour les fenêtres de windows? Quand on lance le dossier mes documents, ou bien le lecteur média, enfin les fenêtres de bases. J'ai compris qu'il suffisait de rajouter AnimationManager dans uses, dans une unité d'un programme. Seulement je ne veux pas créer un programme, je voudrais simplement pouvoir animer les fenêtres de l'ordi. Encore désolé d'être lourd, et merci de consacrer un peu de temps pour me répondre. Merci!
hackeur13 Messages postés 55 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 20 octobre 2007
10 juin 2007 à 02:47
OK alors je vais essayer et si sa marche pas je t'envoie ma source.merci
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
10 juin 2007 à 02:37
Ah oui, et aussi pour vérifier que le problème vient bien des animations: essaie de lancer le programme en supprimant AnimatorManager des uses, et vérifie que tout s'affiche bien comme il faut.
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
10 juin 2007 à 02:35
Ben c'est bizarre, je viens d'essayer avec un TImage en fond, et ça s'affiche nickel dans l'animation et après chez moi. Pour que je trouve ce qui ne va pas, il faudrait donc que tu me dises:
-quelle version de Windows tu as;
-quelle version de Delphi;
-et éventuellement que tu m'envoies le code de ta fiche par MP.
hackeur13 Messages postés 55 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 20 octobre 2007
10 juin 2007 à 01:26
non desoler je parle de l'image de fond sur la TForm!
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
10 juin 2007 à 01:21
Hmm... je ne suis pas sûr qu'on parle tous les 2 de la même chose. Lorsque tu parles d'image de fond, tu veux dire que tu as mis une image de fond sur la TForm que tu cherches à animer? Ou tu veux parler de l'image de fond du bureau?
hackeur13 Messages postés 55 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 20 octobre 2007
10 juin 2007 à 00:41
merci d'avoir repondu alors c'est avec un TImage?
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
10 juin 2007 à 00:35
Elle est implémentée comment ton image de fond? avec un TImage ou avec l'événement OnPaint de la fiche?
hackeur13 Messages postés 55 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 20 octobre 2007
9 juin 2007 à 23:57
Forman,merci j'avais trouvé la solution,et frenchement je me regale mais je me trouve fasse a un autre probleme mintenant!le probleme c'est que j'ai mis une image de fond,et quand j'execute le programme il y aparait plus mon image de fond!!!alors je suis obliger de agrandir un tout petit peu mon application pour voir mon image??alors je me demandé si quelqun avait deja eu un probleme de se genre?car depuis un bon moment j'ai galerer pour trouver un code source comme le tien,et mintenant je dois galerer avec une image de fond grrrrr!!!voila merci de ton aide!!en esperant que tu continue..bonne chance

ps:desoler pour les fautes..
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
9 juin 2007 à 23:14
Bonsoir à tous

@hackeur13: merci pour les explications. On m'a posé la question tellement de fois sur ce source en particulier: "mais comment diable installe/lance-t-on ce programme?" que je commençais à être fatiqué de répondre...
Pour ta question, je ne suis pas sûr de saisir: "quand ton ouvre l'application elle s'ouvre comme les exemples tres bien faite." Tu veux dire comment intégrer le système de déformations dans tes propres programmes? Si c'est bien ça ta question, c'est très simple, il suffit de rajouter "AnimatorManager" dans les uses de n'importe quelle unité de ton programme, par exemple:

Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, AnimatorManager;

blablabla...

end.

Si tu fais ça, le système d'animations est automatiquement activé. Si tu veux donner à l'utilisateur la possibilité de le configurer (lors du clic sur un bouton par exemple):

procedure TForm1.Button1Click(Sender: TObject);
begin
GAnimatorManager.Customize;
end;
hackeur13 Messages postés 55 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 20 octobre 2007
9 juin 2007 à 18:21
bonsoir tout le monde,alors pour faire compiler le code source il faut que tu double clique sur project1 et tu tape f9 et tu auras l'executable,voila pour ta question.
et moi je voudrais savoir si c'est possible de faire une application mais que quand ton ouvre l'application elle s'ouvre comme les exemples tres bien faite.

ps:merci d'avance pour vos reponse!!
layann06 Messages postés 2 Date d'inscription dimanche 27 mai 2007 Statut Membre Dernière intervention 10 juin 2007
27 mai 2007 à 17:58
Bonjour, je ne connais vraiment rien à la programmation, mais ce n'est pas l'envie qui me manque d'acheter un bouquin pour m'y mettre. En attendant, comment fait on pour compiler ce code? Quel fichier doit on ouvrir, et que doit on rajouter comme ligne pour compiler?
Merci d'avance pour vos réponses.
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
7 mai 2007 à 19:06
Salut,

effectivement il devient plus difficile de trouver les versions gratuites... voir ce post:
http://www.thoughtsabout.net/blog/archives/000056.html

On peut donc télécharger la version gratuite de Delphi 7 ici:
http://www.borland.pl/downloads/delphi_7_personal/Delphi7_Personal.zip
cs_theob Messages postés 1 Date d'inscription lundi 7 mai 2007 Statut Membre Dernière intervention 7 mai 2007
7 mai 2007 à 18:30
s'il vous plait, est-ce que vous pouvez me donner un lien pour telecharger le compilateur delphi? c'est urgent !!!!!
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
27 déc. 2006 à 10:54
c'est une très bonne idée ça ^^.
Ravis de t'avoir inspiré ^^
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
26 déc. 2006 à 21:51
flo160fr: Ca me donne une idée ce que tu as écrit: on pourrait "hooker" les processus en cours pour injecter une DLL redéfinissant la WndProc de toutes les fenêtres lancées de façon à les animer lors d'un WM_SHOW. De cette façon-là, on aurait une customisation effective de Windows ;-)
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
25 déc. 2006 à 14:10
badboy952 : Ce "Logiciel" ne s'installe pas, c'est un code source pour les developpeur Delphi, il se compile avec delphi, et ne deforme QUE sur les fenetre de l'application qui contien ce code...
Ce n'est pas un programme de "customisation" de windows...
badboy952 Messages postés 1 Date d'inscription lundi 25 décembre 2006 Statut Membre Dernière intervention 25 décembre 2006
25 déc. 2006 à 11:57
Salut tout le monde est ce que quelqun pourait m'expliquer comment on installe ce logiciel je sais pas du tout comment faire merci d'avance.
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
11 déc. 2006 à 14:06
Bonjour,

D'abord tu dois avoir Delphi. Si c'est le cas tu as juste à compiler le programme fourni dans le zip et ça y est, tu as un EXE ;-)
Il n'y a rien de spécial à installer pour utiliser ce source, il suffit de rajoutter "AnimatorManager" dans la liste après "uses" dans l'une des unités du programme où l'on souhaite l'utiliser.
xxspoonxx Messages postés 1 Date d'inscription lundi 11 décembre 2006 Statut Membre Dernière intervention 11 décembre 2006
11 déc. 2006 à 04:17
Bonjour

Voila j'ai trouvé ces sources qui m'interresse grandement... Le probleme c'est que je suis nouveau dans la programmation... Donc je souhaiterai savoir si quelqun pourai m'expliquer par Email, ou ici,comment installer tout cela ou eventuellement savoir si on pouvai en faire un EXE...

Merci de vos réponse.
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
27 août 2006 à 15:22
Je crois savoir pourquoi
FPreview.Parentwindow:=Panel3.Handle;
ne fonctionne pas en mode multi-moniteur: lorsqu'on référence la propriété Handle d'un descendant de TWinControl (comme un TPanel ici) il se peut que bien que l'instance de l'objet Delphi soit créée, la fenêtre "native" (qui est représentée dans le système d'exploitation pas un THandle) ne soit pas encore créée. Si c'est le cas, Delphi force la création de cette fenêtre pour que la fonction GetHandle de la propriété Handle retourne un descripteur de fenêtre valide. Or, si jamais le THandle créé par Windows devient invalide, et si on l'a affecté au ParentHandle d'une fenêtre il se produit l'erreur décrite: "Handle de fenêtre invalide". En utilisant la propriété Parent à la place, si jamais le Handle du panel a changé, Delphi met à jour automatiquement le ParentHandle de la fenêtre native du système d'exploitation. En théorie, un handle de fenêtre n'a pas à être recréé sauf dans plusieurs cas:
-Changement du style des bords de la fenêtre (BorderStyle ou BorderIcons par exemple)
-Affectation d'un moniteur principal dans le cas d'un système multi-écran.
Mais si le Handle d'une fenêtre doit être recréé (pour une raison ou une autre) ce sera aussi le cas de tous ses enfants. Ici, la TForm du dialogue possédant le TPanel a son Handle recréé après l'appel de OnCreate. Donc, le Handle du Panel devient invalide, or il a été utilisé en tant que ParentWindow de la fenêtre d'exemple...

Ceci devrait expliquer l'erreur, si j'ai été assez clair.
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
27 août 2006 à 01:26
Cirec: j'ai aussi inclus les autres versions dont tu parles dans la MAJ. J'avais essayé d'en faire des plus tordues avec des fenêtres "bondissantes" ou clignotantes ou encore palpitantes (lol) mais comment dire... au bout d'un moment ça fait beaucoup trop! Je vais donc rester avec cette version plus sobre.
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
27 août 2006 à 01:11
Merci Debiars. Je voulais vérifier que j'avais bien réussi à corriger le bug de la fonction CheckWin32Version (définie de base dans Delphi, mais buggée pour les versions antérieures), car j'utilise l'événement WM_PRINT pour afficher la fenêtre dans un bitmap, mais cette fonction n'est disponible qu'à partir de NT.

Je poste les corrections dont on a parlé. Merci pour votre aide à tous, DelphiFr retrouve son dynamisme ;-)
Debiars Messages postés 285 Date d'inscription lundi 16 juin 2003 Statut Membre Dernière intervention 11 février 2018
23 août 2006 à 16:40
Avec 256 Mo de RAM et 1800 MHz :

sous 98 SE : tout fonctionne à part Vista accélération logicielle qui affiche d'un bloc en fin de durée.

sous 2000 Pro : Vista accélération logicielle un peu saccadé. Pour le reste, parfait, impeccable!
Utilisateur anonyme
23 août 2006 à 12:05
Ben voilà c'était donc bien ceci qui posait problème
Mais pour ma part si quelqu'un peut m'expliquer la différence entre les deux déclarations je serai curieux de le savoir ?

Par contre Forman tu dis ceci:
"Chacune des classes d'animations possède plusieurs variantes différentes (en gros une douzaine chacunes) sauf celle de Windows (seulement 6) "

Alors oui il y en bien 6 mais de base en les combinant ça en donne 18 :-)

// Les 6 de base
(AW_BLEND),
(AW_CENTER),
(AW_HOR_POSITIVE),
(AW_HOR_NEGATIVE),
(AW_VER_NEGATIVE),
(AW_VER_POSITIVE),
// et le reste
(AW_HOR_POSITIVE or AW_VER_POSITIVE),
(AW_HOR_NEGATIVE or AW_VER_POSITIVE),
(AW_HOR_POSITIVE or AW_VER_NEGATIVE),
(AW_HOR_NEGATIVE or AW_VER_NEGATIVE),
(AW_HOR_POSITIVE or AW_SLIDE),
(AW_HOR_NEGATIVE or AW_SLIDE),
(AW_VER_NEGATIVE or AW_SLIDE),
(AW_VER_POSITIVE or AW_SLIDE),
(AW_HOR_POSITIVE or AW_VER_POSITIVE or AW_SLIDE),
(AW_HOR_NEGATIVE or AW_VER_POSITIVE or AW_SLIDE),
(AW_HOR_POSITIVE or AW_VER_NEGATIVE or AW_SLIDE),
(AW_HOR_NEGATIVE or AW_VER_NEGATIVE or AW_SLIDE);

@+
Cirec
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
23 août 2006 à 10:09
"en remplacant :
FPreview.Parentwindow:=Panel3.Handle;
Par :
FPreview.Parent:=Panel3;"

Ca marche sur mon ordi multimoniteurs; donc pour moi c'est ok ^^
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
22 août 2006 à 17:52
Ca dépend sûrement aussi de la façon dont tu paramètres tes 2 écrans (mode clone, bureau étendu, etc...). Je ne tiens pas trop à me lancer dans une gestion approfondie du multi-écran, c'est vite prise de tête, en plus la plupart des drivers sont mal fichus et buggent, et il est difficile de trouver de la documentation fiable sur le sujet...
Utilisateur anonyme
22 août 2006 à 17:49
je ne suis pas certain que ce soit effectivement la cause il faudrait avoir la confirmation de Flo160Fr

En tous cas chez moi le problème est résolu sur un sytème à deux écrans
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
22 août 2006 à 17:48
Au fait, je ne sais pas si j'ai été assez clair: les animations s'appliquent à toutes les fenêtres sans distinction (à condition qu'elles soient des classes descendantes de TForm). Par exemple, après avoir choisi un animateur dans la liste et validé le dialogue, si on minimise la fenêtre principale et qu'on la restaure, il se produira une animation.

Chacune des classes d'animations possède plusieurs variantes différentes (en gros une douzaine chacunes) sauf celle de Windows (seulement 6)
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
22 août 2006 à 17:44
Merci Cirec, je vais modifier en conséquence. Je n'ai qu'un moniteur à la maison et juste un ami qui a un multimoniteur, mais pas Delphi, donc c'est difficile de tester/modifier :-(
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
22 août 2006 à 17:42
Merci!

Je vais modifier le code quand j'aurai le temps pour mieux gérer les erreurs avec qqchose dans le style de qoprek. Une dernière chose: les fenêtres non rectangulaires sont "à moitié" gérées. Dans leur cas, ce qu'il y a derrière la fenêtre sera déformé et affiché de la même façon que ce qu'il y a à l'intérieur. Ceci dit, cela devrait passer à peu près inaperçu si le fond de l'écran est à peu près homogène, ou si la fenêtre n'est pas "trop" différente d'un rectangle. Par exemple, avec les fenêtres XP aux coins arrondis, on ne se rend compte de rien.

Dans tous les cas, prendre la forme de la fenêtre en compte risquerait de doubler le temps de calcul, et la mémoire utilisée, qui sont déjà bien assez grands!
Utilisateur anonyme
22 août 2006 à 17:38
Salut,

je posède également un système avec deux moniteurs ...

Erreur Système - Code 1400 - Handle de fenêtre non Valide
(Comme Flo160Fr certainement ?)

Enfin après une petite recherche j'ai trouvé ceci :

en remplacant :
FPreview.Parentwindow:=Panel3.Handle;
Par :
FPreview.Parent:=Panel3;

tout fonctionne parfaitement ...

Génial, très bon travail

10/10 sans hésitation
@+
Cirec
Francky23012301 Messages postés 400 Date d'inscription samedi 6 août 2005 Statut Membre Dernière intervention 11 février 2016 1
22 août 2006 à 16:49
Salut,

Bon travail Forman : vraiment bluffant.

Code : nickel

10/10.
flo160fr Messages postés 157 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 14 avril 2009
22 août 2006 à 15:57
Géniale ta source !
Sous xp : Ca marche très bien (sauf sur mon ordi qui a plusieur moniteur; mais ça marche sur l'autre ^^)

Sous 98 SE et 95(light) : ça marche pas... mes machine ne son pas assez puissantes (16 mo de ram pour le 95 32 pour le 98; 133 MHz pour le 95, 220 pour le 98; les 2 avec des cartes vidéo pouraves....)

aller un petit 10/10 pour la route ^^
qoprek Messages postés 10 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 26 mars 2007
22 août 2006 à 15:31
Je suis en multi moniteur donc ca marchera pas .. zut :(

Sinon j'aurais vu une procédure de ce type pour vérifier (j'ai pas du tout testé donc ca ce trouve j'ai écrit des bêtises):

Procedure TAnimatorManager.AnimatorCheck(FenetreDeTest:TCustomForm);
Var AnimatorClassIDCourant,
AnimatorDelayCourant,
Compteur : Integer;
Begin
Assert(Assigned(FenetreDeTest),'Erreur: La fenêtre servant de tests des animations possibles n''est pas assignée !');
AnimatorClassIDCourant := AnimatorClassID;
AnimatorDelayCourant := GetDelay;
SetDelay(10);
For Compteur := 0 To GetRegisteredAnimatorClassCount Do Begin
AnimatorClassID := Compteur;
Try
FenetreDeTest.Hide;
AnimateForm(FenetreDeTest,True);
FenetreDeTest.Show;
Except
On E : Exception Do Begin
If AnimatorClassIDCourant=Compteur Then AnimatorClassIDCourant:=0;
FRegisteredAnimatorClasses.Remove(GetAnimatorClass(Compteur));
End;
End;
End;
SetDelay(AnimatorDelayCourant);
AnimatorClassID := AnimatorClassIDCourant;
End;
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
22 août 2006 à 14:56
lol, quelle idée d'avoir plusieur ecran (afin si sa veut dire sa multi-moniteur)
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
22 août 2006 à 14:54
Une petite remarque pendant que j'y pense: ça ne fonctionnera pas en mode multi-moniteur (j'ai déjà essayé et ça plante grave!)
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
22 août 2006 à 14:48
qoprek: je pense que ta carte ne gère pas les PBuffer (pixel-buffer) de grande taille. Le code a besoin d'un PBuffer (c'est à dire un device context OpenGl off-screen) de même taille que ton écran. Un tel pbuffer (si tu es en 1280*1024>1000000 pixels @ 32 bits) consomme au moins 3-4 MO de mémoire graphique, donc je pense que c'est de là que vient le problème, étant donné que l'allocation se fait par l'intermédiaire du driver, il se peut que celui-ci limite la taille maximale. Effectivement, il faudrait que je rajoutte quelque chose pour intercepter l'erreur proprement et mettre un message d'erreur plus parlant.

Le problème c'est qu'il n'est pas vraiment recommandé de vérifier que tous les animateurs marchent avant de les proposer dans la liste. En effet, par exemple celui qui utilise OpenGl nécessite ce fameux PBuffer de plusieurs MO en mémoire graphique (et il faut l'allouer pour vérifier que ça marche). Or, allouer une telle quantité prend du temps (jusqu'à 1/2 seconde sur ma geforce 7600) et c'est inacceptable pour une animation qui dure 700millisecondes. Donc cette mémoire devrait être allouée une bonne fois pour toute... c'est à dire seulement si l'utilisateur a choisi d'utiliser l'animation OpenGl (sinon on consomme des resources pour rien, seulement pour vérifier que ça marche). Certes on pourrait imaginer un cas où l'on testerait toutes les classes d'animateurs avant d'en faire la liste uniquement quand l'utilisateur affiche le dialogue de sélection. Mais là encore ça ne résoud pas le problème, puisque l'allocation de pbuffer peut quand même échouer si tu lances le programme plus tard après qu'un autre (lancé entre temps) ait déjà consommé les resources disponibles (en effet, la mémoire graphique est distribuée entre les applications dans l'ordre où elle la demandent)...

Pour le mode software, je ne sais pas non plus pourquoi ça ne fonctionne pas. J'utilise l'API PlgBlt qui permet de déformer une image en un parallélogramme. En découpant la surface de la fenêtre et en l'appelant plusieurs fois, je reconstitue la forme "tordue" approchée désirée. Si tu ne vois rien apparaitre, ça peut venir d'un problème de rapidité: seule la première étape (non visible car en dehors de l'écran) a le temps de s'afficher, puis le délai étant dépassé quand le programme arrive à la frame n°2, il s'arrète et donc tu ne vois rien s'afficher.

Dans tous les cas, vérifie si tes drivers graphiques sont à jour.

Merci pour les commentaires en tout cas
qoprek Messages postés 10 Date d'inscription vendredi 18 août 2006 Statut Membre Dernière intervention 26 mars 2007
22 août 2006 à 13:55
Bonjour,

Sur mon poste les animations style Vista logicelles ne font rien (juste la tempo qui dure et hop la fenêtre affichée normalement) et les animations style Vista matérielles provoquent une exception générée par Assert(FPBufferARB<>0,SysErrorMessage(GetLastError));
dans TPBufferCanvas.CreateContextCreateContext.

Pour l'exception je pense que c'est tout simplement que mon sous-système vidéo ne gère pas l'accéleration matérielle mais peut-être remonter une exception trappée en indiquant que cette option n'est pas disponible. Peut être même une fonction de tests des animations disponibles pourraient être intégrées a l'objet et mettrait a jour la liste des animations disponibles.

Quant a l'animation style Vista logicielle, je ne sais pas pourquoi je n'ai rien.

Cdlt.
Benoit

Informations:
Report Date: 08/22/2006
Report Time[hr:mm:ss]: 13:45:49
Driver Version: 6.14.10.4410
Operating System: Windows XP* Professional, Service Pack 2 (5.1.2600)
Default Language: French
DirectX* Version: 9.0
Physical Memory: 1015 MB
Minimum Graphics Memory: 8 MB
Maximum Graphics Memory: 128 MB
Graphics Memory in Use: 16 MB
Processor: x86 family 6 Model 13 Stepping 8
Processor Speed: 1994 MHZ
Vendor ID: 8086
Device ID: 2592
Device Revision: 03
* Accelerator Information *
Accelerator in Use: Mobile Intel(R) 915GM/GMS,910GML Express Chipset Family
Video BIOS: 3412
Current Graphics Mode: 1280 x 1024 True Color (60 Hz)
* Devices Connected to the Graphics Accelerator *
Active Monitors: 1
Active Notebook Displays: 1
* Monitor *
Monitor Name: Dell 1704FPT (Analog)
Display Type: Analog
Gamma Value: 2,20
DDC2 Protocol: Supported
Maximum Image Size: Horizontal: 13,3 inches
Vertical: 10,6 inches
Monitor Supported Modes:
640 x 480 (60 Hz)
640 x 480 (75 Hz)
720 x 400 (70 Hz)
800 x 600 (60 Hz)
800 x 600 (75 Hz)
1024 x 768 (60 Hz)
1024 x 768 (75 Hz)
1152 x 864 (75 Hz)
1280 x 1024 (60 Hz)
1280 x 1024 (75 Hz)
Display Power Management Support:
Standby Mode: Supported
Suspend Mode: Supported
Active Off Mode: Supported
* Notebook *
Monitor Name: Écran Plug-and-Play
Display Type: Digital
Gamma Value: 3,54
DDC2 Protocol: Supported
Maximum Image Size: Horizontal: Not Available
Vertical: Not Available
Monitor Supported Modes:
640 x 480 (60 Hz)
800 x 600 (60 Hz)
1024 x 768 (60 Hz)
1400 x 1050 (50 Hz)
1400 x 1050 (60 Hz)
Display Power Management Support:
Standby Mode: Supported
Suspend Mode: Supported
Active Off Mode: Supported
* SDVO Encoder Report *
** Encoder 1 **
Vendor ID: Silicon Image
Device ID: 170
Device Revision: 2
Major Version: 1
Minor Version: 0
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
22 août 2006 à 13:14
whoua je suis soufflé =) 10/10
Rudy3212 Messages postés 154 Date d'inscription vendredi 20 août 2004 Statut Membre Dernière intervention 31 décembre 2007
22 août 2006 à 13:01
C'est cool cette source merci,

Par contre j'ai pas win98, ni 2000 et encore moins 95 lol.
Désolé allez 10/10 :)
cs_Forman Messages postés 600 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 6 avril 2010 1
22 août 2006 à 12:17
Si quelqu'un a l'occasion d'essayer le programme sous Win2000, Win95 ou Win98, merci de me dire si ça fonctionne ou non.
Rejoignez-nous