C
Hallo,
hab ein seltsames Phanomän mit der Funktion StretchDIBits. Von heute auf morgen
(so die Aussage des Bedieners) wurden die Bilder nur noch im Sekunden Takt
aktualisiert und nicht wie zuvor mehrmals pro Sekunde (auch im Taskmanager ist
auf einmal eine Systemauslastung von 100% zu beobachten). Ich habs das getestet,
und es ist wirklich an einem Rechner zu beobachten wie das System in die Knie
geht.Auf allen anderen läuft die identische Software einwandfrei. Hab da
testweise die Funktion SetDIBitsToDevice genutzt und mit dieser wird das Bild
wieder in der richtigen Frequenz aktuallisiert, nur eben nicht angepasst.
Kann mir einer weiterhelfen? Ich bin mit meinem Latein am ende.
Hier der entscheidende Auschnitte vom Code:
int nLines = 0;
if ((m_lpBMIH == NULL) || (hDC == NULL))
return FALSE;
if (fStretch)
{
//100% Systemauslastung
SetStretchBltMode (hDC, COLORONCOLOR);
nLines = StretchDIBits (hDC, startPos.x, startPos.y, size.cx, size.cy,
0, 0, m_nSizeX, m_nSizeY,
m_lpImage, (LPBITMAPINFO) m_lpBMIH,
DIB_RGB_COLORS, SRCCOPY);
}
else
{
//Funktioniert!!
nLines = SetDIBitsToDevice (hDC, // handle to the device
startPos.x, // XDest
startPos.y, // YDest
m_nSizeX, // source rectangle width
m_nSizeY, // source rectangle height
0, // x-coordinate of lower-left corner of the source rect
0, // y-coordinate of lower-left corner of the source rect
0, // first scan line in array
m_nSizeY, // number of scan lines
m_lpImage, // modified address of array with DIB bits
(LPBITMAPINFO) m_lpBMIH, // address of structure with bitmap info
DIB_RGB_COLORS); // RGB or palette indices
}