B
@ sri & Martin: ich habe die von euch genannten Mängel behoben. getDestBitmap(void) sieht jetzt wie folgt aus, an den anderen Methoden hat sich nichts geändert:
CBitmap* PicIO::getDestBitmap(void)
{
loadVector();
COLORREF m_Value;
int n_picHeight, n_picWidth;
HGDIOBJ CBitmap_save;
pCBitmap_dest->FromHandle(m_hBitmap);
CDC *pMemDC = new CDC;
CBitmap_save = pMemDC->SelectObject(&pCBitmap_dest);
TRACE("%d\n",CBitmap_save);
for(int j=0;j<v_picture.size();j++)
{
for(int i=0;i<v_picture[0].size();i++)
{
pixel.SetRect(i,j,i+1,j+1);
p_CBrOne.CreateSolidBrush(v_picture[j][i]);
pMemDC->FillRect(pixel, &p_CBrOne);
} //in dieser Zeile soll der Fehler liegen
}
pMemDC->SelectObject(&CBitmap_save);
delete pMemDC;
return pCBitmap_dest;
}
An der Fehlermeldung hat sich nichts geändert. Die Aufrufliste zeigt auf die im Code markierte Zeile. Es scheitert wieder an der ersten ASSERT-Anweisung im angegebenen Ausschnitt der wingdi.cpp.
Die Trace-Anweisung liefert "0" zurück, was der Fehlercode für CDC::SelectOBject() ist. Also liegt der Fehler nach wie vor an der Initialisierung von CBitmap_dest? m_hBitmap ist ein Handle auf ein zuvor eingelesenes Bitmap. Wie lang ist die Gültigkeit eines solchen Handles? Ich habe den Wert des Handles unmittelbar vor der Anweisung
pCBitmap_dest->FromHandle(m_hBitmap);
überprüft, er ist nicht NULL, daran kann es also eigentlich nicht liegen oder? Fragen über Fragen