Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3060 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Desactiver l'effacement de la fenetre dans un Form

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Desactiver l'effacement de la fenetre dans un Form

n°1583466
Ace17
Posté le 06-07-2007 à 23:27:39  profilanswer
 

Salut a tous,
j'utilise une librairie graphique (Matrox Imaging Library, pour ceux qui connaissent) qui me permet d'afficher le contenu d'un buffer dans une fenetre. Pour cela, la librairie propose une fonction MdispSelectWindow qui prend en parametre un handle vers la fenetre (HWND). Cette fonction ne provoque pas l'affichage proprement dit, mais associe le buffer avec la fenetre de telle sorte que lorsque la fenetre a besoin d'etre redessinee, la librairie prend la main et dessine ce qui se trouve dans le buffer.  
Avec une fenetre "normale" (en C via Win32) je n'ai aucun probleme. Le contenu du buffer s'affiche. Mais la je dois utiliser Visual Basic et c'est dans un For m que le dessin doit avoir lieu. J'arrive a recuperer un handle de fenetre vers le Form et a le passer a MdispSelectWindow. Seulement voila, il n'y a rien qui s'affiche; ou plutot, le contenu du buffer s'affiche pendant une fraction de seconde, avant d'etre recouvert par la couleur grise du fond du Form.
Je suppose que ce fond gris qui vient recouvrir l'image de mon buffer a pour role d'effacer le contenu de la fenetre avant de la redessiner ... mais le hic c'est que la librairie graphique redessine avant l'effacement .... (je ne sais pas si je suis tres clair ...)
Je suis en train de devenir dingue, alors si quelqu'un a une solution je lui en serais tres reconnaissant.

mood
Publicité
Posté le 06-07-2007 à 23:27:39  profilanswer
 

n°1583485
MagicBuzz
Posté le 07-07-2007 à 02:18:53  profilanswer
 

Truc qui n'a rien à voir.
 
Je sais qu'en VB, mais aussi en C# ou C++, quand on fait du DirectDraw ou du Direct3D, on peut le faire directement dans une fenêtre, ou en passant par un objet PictureBox.
 
A mon avis, en VB, il te lance un event interne OnPaint qui vient effectivement redessiner les contrôles de ta fenêtre... A commencer par le fond de la fenêtre.
 
Je doute que tu puisses le court-circuiter malheureusement.
 
Par contre, peux-être peux-tu coller ton "For m" dans le OnPaint, histoire de dessiner une fois que VB à redessinné la form.
 
Sinon, reste l'option du PictureBox si ton Matrox Image Library permet d'utiliser aussi ce type de contrôle.

n°1583490
Ace17
Posté le 07-07-2007 à 08:49:20  profilanswer
 

MagicBuzz a écrit :

Par contre, peux-être peux-tu coller ton "For m" dans le OnPaint, histoire de dessiner une fois que VB à redessinné la form.


Le probleme est que ca n'est pas moi qui controle le moment de l'effacement de la fenetre, et je ne controle pas non plus le moment ou le buffer est redessine dans la fenetre ... et ces deux moments arrivent dans le mauvais ordre :D
Dans un premier temps, j'avais mis dans le OnPaint du form une fonction qui se chargeait de recuperer le buffer et qui l'affichait manuellement (sans utiliser MdispSelectWindow, donc). Ca marche bien pour les images fixes, mais en fait mon buffer est un buffer de grab et il me sert a afficher ce qui arrive sur une entree video. J'appelais donc RedrawWindow/InvalidateRect apres chaque grab, j'avais beau essayer toutes les options pour qu'il n'efface pas la fenetre avant, ca n'etait pas pris en compte, et ca scintillait horriblement.
 
Je vais plutot essayer la PictureBox, mais a mon avis ca va etre le meme probleme. Quand bien meme la PictureBox ne souffrerait pas d'un effacement systematique, ca ne serait toujours pas le cas de la fenetre parent (le form donc). Enfin bon, je vais essayer quand meme, ca ouvrira peut etre de nouvelles pistes.
 
En tout cas, merci beaucoup d'avoir repondu.
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Desactiver l'effacement de la fenetre dans un Form

 

Sujets relatifs
Ouvrir la fenetre "Arreter l'ordinateur"[JavaScript] Ouvrir une page dans la fenêtre parente ?
Modifer les fonctions d'un popup[C#] Détecter le survol de la fenêtre
[Resolu] espace blanc entre le bord d'une image et la fenetre ![Java]Jtable qui prend la taille de la fenetre
Placer une fenetre dans un endroit précis de l'écranPlugin Visual Editor: changer le style de la fenêtre?
[FLASH] Eviter la fenêtre de paramètres du flash player ?Cas spécifique de récupération de données d'un form
Plus de sujets relatifs à : Desactiver l'effacement de la fenetre dans un Form


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR