Question

J'utilise le code suivant pour créer un contrôleur de domaine compatible:

m_pDC=new CDC();
VERIFY(m_pDC->CreateCompatibleDC(sampleDC);
CBitmap bitmap; 
if (bitmap.CreateCompatibleBitmap(sampleDC, rect.Width(), rect.Height()))
{
   m_pOldBitmap = m_pDC->SelectObject(&bitmap);
}

Ma question est la suivante: CDC CBitmap occupe-t-il de la mémoire? S'il utilise de la mémoire, pourquoi le résultat est-il mauvais lorsque rect.width et rect.height sont volumineux? (Il y a assez de mémoire). Quelqu'un a dit qu'il utilise la mémoire sur la carte vidéo. Est-ce vrai. Je n'en suis pas très sûr.

Était-ce utile?

La solution

La mémoire dans CreateCompatibleBitmap est allouée à partir d'un pool système qui est est généralement limité à environ 200 mégaoctets sur les versions 32 bits de Windows.

Depuis WinNT4.0 , l'API CreateBitmap () alloue le bitmap dans la mémoire paginée en mode noyau . Dans WinNT4, il était impossible de créer des bitmaps supérieurs à 48 Mo.

Quelle était votre limite?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top