Le problème exposé ci-dessous n'apparaît que sous Vista avec l'interface Aero active. Sous XP, ou sans l'interface Aero, ou si un logiciel comme PaintShopPro change le jeu des couleurs, tout va bien.

Je cherche à capturer le contenu d'une fenêtre OpenGL dans une bitmap.
(DisplayWnd est le HWND de ma fenêtre OpenGL)...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
	HDC dc = ::GetDC(DisplayWnd);
	HDC hdc = CreateCompatibleDC(dc);
	HBITMAP hBitmap = CreateDIBSection(hdc, &bitmapInfo, DIB_RGB_COLORS, (void **)&bufferbgr, NULL, 0);
	HBITMAP oldBitmap = (HBITMAP)SelectObject(hdc, hBitmap);
 
 
	BitBlt(hdc, 0, 0, WdWidth, WdHeight, dc, 0, 0, SRCCOPY);
J'obtiens ce qu'il y a en dessous de ma fenêtre OpenGL, comme si la fenêtre OpenGL était complètement transparente. J'ai essayé avec du StretchBlt et du transparentBlt avec le même résultat.

Any good idea?