C
BlackScreen schrieb:
An welchen stellen meines Quelltextes Stimmt mein Kommentar noch nicht ??
Ich hab das nicht auf deine Kommentare bezogen, sondern auf deinen Quellcode direkt. Der ist hier falsch:
DeleteDC(dcPicture); // Devide Context dc Picture löschen
DeleteObject(hbmpPicture); // Object hbmpPictute löschen.
ReleaseDC(hWnd,dcScreen); // DC auf Fenster wieder Freigeben.
So muss es aussehen:
// Header: <Windows.h> und <ShlWApi.h>
// Zusätzliche Library: ShlWApi.lib
bool LoadBitmapEx(PTCHAR pszBitmapSrc,int x,int y,HWND hWnd)
{
if(pszBitmapSrc== NULL || !PathFileExists(pszBitmapSrc))
return (false);
HBITMAP hbmpPicture; // HANDLE auf ein Bitmap
HDC dcScreen; // Device Context dcScreen
HDC dcPicture; // Decice Context dcPicture
hbmpPicture = (HBITMAP)LoadImage(NULL, pszBitmapSrc, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_DEFAULTSIZE | LR_DEFAULTCOLOR);
if(hbmpPicture == NULL) // ungültige Datei
return (false);
dcScreen = GetDC(hWnd); // Device Context vom Fenster holen
dcPicture = CreateCompatibleDC(dcScreen); // dcPicture mit den Selben Daten vom DeviceContext vom Desktop füllen.
HBITMAP hbmpPrev = (HBITMAP)SelectObject(dcPicture,hbmpPicture); // Zum Device Context dcPicture Objekt HBITMAP hizufügen
BitBlt(dcScreen,x,y,171,171,dcPicture,0,0,SRCCOPY); // die Bits von dcPicture nach dcScreen Hinzufügen.
DeleteObject(SelectObject(dcPicture, hbmpPrev)); // Object hbmpPictute löschen.
DeleteDC(dcPicture); // Devide Context dc Picture löschen
ReleaseDC(hWnd,dcScreen); // DC auf Fenster wieder Freigeben.
return (true);
}
Wie du siehst hab ich die Funktion noch etwas optimiert .
Sie gibt true zurück wennd er Aufruf erfolgreich war, andernfalls false.