Bonjour,
J'ai un bout de programme qui dessine sur un static le contenu d'un buffer.
Une explication vraiment grossiere.
void DoEvents()
{
while(msg)
{
PeekMessage(..);
DispatchMessage(...);
}
}
void Dessine(HWND hDlgMere, int idStatic, int iBuffer, int Taill)
{
InvalidateRectangle(GetDlgItem(idStatic, ...); // Efface le statique
DoEvents(); // Fonction qui permet de traiter les messages en attente, ici (entre autre )WM_PAINT
GetDC(idStatic);
MoveToEx(...);
for(i=0; i<Taille; i++)
{
LineTo(...);
}
ReleaseDC(...);
}
Cette fonction est appele par un message perso dans la fonction de
traitement des messages de la boite de dialog Mere (DialogProc)
case WM_USER + 1:
Dessine(hwndDlg, wParam, lParam, Taille);
En tout j'ai 4 statiques donc a chaque message, je
dessine sur le statique id=300, puis le statique id=301 puis id=302 et
id=303 puis je recommence 300 ...
Ce qui m'embete c'est le DoEvents. Car les messages WM_USER+1 arrive
rapidement donc le DoEvents peu laisser passer un WM_USER +1 alors que
je n'ai pas traité celui d'avant.
Donc, comment rafraichir (effacer) un controle (ici un statique) pour
que je puisse y dessiner dessus sans ce "DoEvents" et sans passer par
le WM_PAINT.
Est ce que m'a methode pour dessiner est la bonne (GetDC ...)
J'espere que je me suis fait comprendre car pas facile a expliquer.
Merci pour vos réponses,
Matt...