Empécher le clignotement d'une fenêtre

Résolu
Mastersam
Messages postés
116
Date d'inscription
dimanche 26 septembre 2004
Statut
Membre
Dernière intervention
13 février 2008
- 2 avril 2007 à 09:47
Mastersam
Messages postés
116
Date d'inscription
dimanche 26 septembre 2004
Statut
Membre
Dernière intervention
13 février 2008
- 2 avril 2007 à 15:46
Bonjour, je sais qu'en voyant le titre plusieur d'entre vous se seront dis que le sujet a déjà été traité ... "Fais du double buffering et voilà ...".

Mais ma question porte sur deux point bien précis, je travaille sous devcpp en api window (WM_PAINT ...). J'ai une fenêtre avec un graphique dessiné à l'intérieur, qui se rafraichi toutes les 40ms environ (c'est une FFT) et là aucun pb de scintillement mon double buffering fonctionee bien. Mais quand je passe sur ma fenetre avec une autre fenêtre que je déplace j'ai le fond d'origine de ma fenêtre qui apparait puis ensuite mon graphe qui se dessine, du coup comme ça se produit à chaque déplacement de la fenêtre ça clignote vraiment beaucoup, je vois beaucoup plus le fond de la fenêtre que le graphe.
L'autre moment où celà se produit est quand je redimensionne ma fenêtre, là aussi le fond de la fenêtre se dessine avant mon graphe et c'est vraiment horrible.

Est-ce qu'il y a un style de fenêtre spécial à indiquer pour qu'elle ne redessine pas son fond avant le WM_PAINT, ou dois-je effectuer une sorte de subclassement, si oui sur quoi ?

Merci d'avance.

http://www.rc-bot.com/bannieres/banniere468x60.jpg

2 réponses

cs_aardman
Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
2 avril 2007 à 14:28
Salut Mastersam,

Le fond des fenetres est dessiné lors du message WM_ERASEBKGND.
Généralement on ne traite pas ce message, et c'est DefWindowProc qui se
charge de dessiner le fond de ta fenetre avec le brush de la fenetre.

Tu peux donc le traiter, et ne rien dessiner, ou dessiner partielement
le fond (avec les fonctions de cliping, comme ExcludeClipRect).<link href="../../../../../css/ie4.css" type="text/css" rel="stylesheet" /><!-- @ --><link href="../../../../../css/inetsdk.css" type="text/css" rel="stylesheet" /><!-- @ --><style type="text/css"><![CDATA[
PRE.clsCode { font-size:110%; }
PRE.clsSyntax { font-size:100%; }
TD DIV.clsBeta { display:none;}

A:link { color:#0000ff; text-decoration:underline;}
A:visited { color:#0000ff; text-decoration:underline;}
A:hover { color:#3366ff; text-decoration:underline;}
MSHelp\:link {
color:#0000ff;
text-decoration:underline;
cursor:hand;
hoverColor:#3366ff;
filterString: ;}
]]></style><link href="ms-help://Hx/HxRuntime/HxLink.css" type="text/css" rel="stylesheet" />

<xml id="_topicdata" pagetype="winnotify" proj="WinUIHXS" name="WM_ERASEBKGND" pubpath="/WinUI/WindowsUserInterface/Resources/Icons/IconReference/IconMessages/WM_ERASEBKGND.htm"><!-- topic data --><root></root></xml>

<xml xmlns=""><mshelp:keyword index="A" term="_win32_WM_ERASEBKGND"></mshelp:keyword><mshelp:keyword index="A" term="_win32_WM_ERASEBKGND_cpp"></mshelp:keyword><mshelp:toctitle title="WM_ERASEBKGND Notification"></mshelp:toctitle><mshelp:rltitle title="WM_ERASEBKGND Notification ()"></mshelp:rltitle><mshelp:keyword index="F" term="WM_ERASEBKGND"></mshelp:keyword><mshelp:keyword index="K" term="WM_ERASEBKGND"></mshelp:keyword><mshelp:attr name="TopicType" value="kbRef"></mshelp:attr><mshelp:attr name="Locale" value="kbEnglish"></mshelp:attr><mshelp:attr name="DevLang" value="C++"></mshelp:attr><mshelp:attr name="Technology" value="WinUI"></mshelp:attr><mshelp:attr name="TechnologyVers" value="kbWinUI"></mshelp:attr><mshelp:attr name="DocSet" value="WCSDK"></mshelp:attr><mshelp:attr name="DocSet" value="LHSDK"></mshelp:attr><mshelp:attr name="DocSet" value="PSDK"></mshelp:attr><mshelp:attr name="TargetOS" value="Windows"></mshelp:attr><mshelp:attr name="TopicType" value="apiref"></mshelp:attr><mshelp:attr name="APIName" value="WM_ERASEBKGND"></mshelp:attr><mshelp:attr name="APIType" value="NA"></mshelp:attr><mshelp:attr name="TopicType" value="winnotify"></mshelp:attr></xml>
3
Mastersam
Messages postés
116
Date d'inscription
dimanche 26 septembre 2004
Statut
Membre
Dernière intervention
13 février 2008

2 avril 2007 à 15:46
Ok c'est ce que je cherchais précisément, merci beaucoup.
http://www.rc-bot.com/bannieres/banniere468x60.jpg
0