Bonjour,
J'ai fais un serveur d'image que l'on interroge par TCP pour récupérer l'image.
Le client envoie une requête, le serveur génère l'image et l'envoie au client.
Pour mes tests, je stresse le serveur en envoyant des requêtes toutes les 200 ms, sachant que le serveur n'a pas le temps de générer l'image en 200 ms.
J'ai une pile d'attente qui gère ce point.
J'en viens à mon problème.
Pour générer l'image, j'utilise un double buffer, pour éviter le flicking.
Cette fonction permet de remettre un fond bleu à mon image à chaque fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 BOOL CMyView::OnEraseBkgnd(CDC* pDC) { CDC dcMem; CBitmap *pOldBitmap; dcMem.CreateCompatibleDC(pDC); pOldBitmap = dcMem.SelectObject(&m_bMap); // Set brush to desired background color. CBrush backBrush(RGB(169, 230, 252)); // Save old brush. CBrush* pOldBrush; pOldBrush = dcMem.SelectObject(&backBrush); CRect rect; dcMem.GetClipBox(&rect); // Erase the area needed. dcMem.PatBlt(rect.left, rect.top, rect.Width(),rect.Height(), PATCOPY); dcMem.SelectObject(pOldBrush); dcMem.SelectObject(pOldBitmap); dcMem.DeleteDC(); return TRUE; //return CWnd::OnEraseBkgnd(pDC); }
Je lance mon application avec 2 clients et un serveur, et au bout d'un moment (très variable),
j'ai une erreur sur le CreateCompatibleDC qui me met le dcMem à NULL.
J'ai aussi testé le booléen de retour qui est à 0 (donc erreur), mais étonnement quand je regarde la valeur du GetLastError, j'ai 0 ce qui signifie, pas d'erreur !!!!
Je ne comprends plus rien.
Merci de votre aide.
Partager