API AnimateWindows( ) affiche en noir.

API AnimateWindows( ) affiche en noir. - Delphi/Pascal - Programmation

Marsh Posté le 30-05-2013 à 11:25:09    

Bonjour à tous :)
 
J'ai un petit bug à corriger, mais j'ignore d'où il vient. Ce code fonctionnerait parfaitement :  
 

Code :
  1. procedure TForm1.FormShow(Sender: TObject);
  2. begin
  3.       FormCenter;
  4.       AnimateWindow(Handle, 250, SW_SHOWMINNOACTIVE or AW_ACTIVATE);
  5.       Form1.Show;
  6.       Form1.Repaint;
  7. end;


 
s'il ne m'affichait pas le bord de la fenêtre en noir, durant le déploiement ! Et ça, je n'arrive pas à le copier en photo-écran.  
 
Où se situe mon bug ?  
 
Merci :hello:
 

Reply

Marsh Posté le 30-05-2013 à 11:25:09   

Reply

Marsh Posté le 30-05-2013 à 15:52:41    

HERIBERT a écrit :

Bonjour à tous :)
J'ai un petit bug à corriger, mais j'ignore d'où il vient. Ce code fonctionnerait parfaitement :  

Code :
  1. procedure TForm1.FormShow(Sender: TObject);
  2. begin
  3.       FormCenter;
  4.       AnimateWindow(Handle, 250, SW_SHOWMINNOACTIVE or AW_ACTIVATE);
  5.       Form1.Show;
  6.       Form1.Repaint;
  7. end;




Purée, 20 minutes pour comprendre que cette fonction n'aimait pas le style WS_EX_COMPOSITED (sans rapport avec ton problème cela dit). Tu as du te gourer dans les flags passés en 3ème paramètre à la fonction AnimateWindow(). SW_SHOWMINNOACTIVE est un flag propre à ShowWindow(), les flags propres à AnimateWindow() sont listés ici :
 
http://msdn.microsoft.com/en-us/li [...] 85%29.aspx

Reply

Marsh Posté le 30-05-2013 à 16:06:33    

OK ;) Merci pour tout : je vais voir ça :heink:

Reply

Marsh Posté le 30-05-2013 à 16:33:11    

tpierron a écrit :


Purée, 20 minutes pour comprendre que cette fonction n'aimait pas le style WS_EX_COMPOSITED (sans rapport avec ton problème cela dit). Tu as du te gourer dans les flags passés en 3ème paramètre à la fonction AnimateWindow(). SW_SHOWMINNOACTIVE est un flag propre à ShowWindow(), les flags propres à AnimateWindow() sont listés ici :
 
http://msdn.microsoft.com/en-us/li [...] 85%29.aspx


 
Ca reste noir sur les bords. Cette fois, avec une bidouille sur les paramètres, j'ai pu fixer la fenêtre avec ses bords noirs, pour la prendre en photo :  
 
http://hfr-rehost.net/self/b95f109fc038838edf7d0fed56c61b5cecfb44a5.png
 
 
Le problème, c'est qu'il y a tant de paramètres que, même en traduisant en français, pas évident de savoir lequel rajouter. Par empirisme, j'en ajoute un peu bau hasard... Il doit bien y avoir des milliers de combinaisons  :pt1cable:  

Reply

Marsh Posté le 30-05-2013 à 16:52:45    

HERIBERT a écrit :

Le problème, c'est qu'il y a tant de paramètres que, même en traduisant en français, pas évident de savoir lequel rajouter. Par empirisme, j'en ajoute un peu bau hasard... Il doit bien y avoir des milliers de combinaisons  :pt1cable:  


Hmm, il n'y a pas tant de combinaison que ça. En général un fond noir, c'est parce que un WM_PAINT ou WM_ERASEBKGND a été mal géré (genre absense de HBRUSH sur la classe de la fenêtre (WNDCLASS.hbrBackground)).

Reply

Marsh Posté le 30-05-2013 à 17:27:34    

Bizarre. C'est la classe TFom, sans modification. Et la propriété HBRUSH ou .hbrbackground est sans doute définie dans le source-même des TForm Delphi ?  
 
On peut modifier ça sur une Form, sans détraquer quoi que ce soit ?  

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed