2009-08-03 5 views
0

J'utilise le code suivant pour créer un DC compatible:MemoryDC occupe-t-il la mémoire ou la mémoire de la carte vidéo?

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 CDC ne CBitmap occupé la mémoire? S'il utilise de la mémoire, pourquoi obtient-il un mauvais résultat lorsque rect.width et rect.height sont grands. (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 ne suis pas très sûr à ce sujet.

Répondre

3

La mémoire de CreateCompatibleBitmap est allouée à partir d'un pool à l'échelle du système typically limited à environ 200 mégaoctets sur les versions 32 bits de Windows.

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

Quelle était votre limite?

+3

..... pourquoi donner jia3ep -2 sans aucun commentaire? avoir une meilleure réponse? – user25749