Hallo!
Ich hab ein Problem mit UpdateLayeredWindow, es gibt False zurück und GetLastError gibt den Errorcode 8 (ERROR_NOT_ENOUGH_MEMORY, Not enough storage is available to process this command.), abder ich habe gerade mal die Hälfte des RAM besetzt und in einer anderen Programmiersprache klappt es eigentlich genauso. Das Bild habe ich mit GDI+ erstellt und dann als HBITMAP übergeben:
Code
HDC dc=GetDC(hwnd);
HDC cdc=CreateCompatibleDC(dc);
POINT p;
p.x=x;
p.y=y;
BLENDFUNCTION blend;
blend.SourceConstantAlpha=255;
blend.AlphaFormat=1;
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Graphics bgra(hwnd);
Bitmap bmp(100,100,&bgra);
Graphics *gra=Graphics::FromImage(&bmp);
gra->Clear(Color(0,0,0,0));
Pen pen(Color(255,0,255,0));
gra->DrawLine(&pen,x,y,w,h);
pen.~Pen();
delete gra;
bgra.~Graphics();
HBITMAP hbmp;
bmp.GetHBITMAP(Color(0,0,0,0),&hbmp);
SelectObject(cdc,hbmp);
bmp.~Bitmap();
SIZE sz={w,h};
short k=UpdateLayeredWindow(hwnd,dc,NULL,&sz,cdc,&p,0,&blend,2);
if (k==0)
{
DWORD error=GetLastError();
char errz[10];
_itoa_s(error,errz,10);
MessageBox(NULL,errz,"UpdateLayeredWindow",MB_OK|MB_ICONERROR);
exit(error);
}
Alles anzeigen
Ich bedanke mich für jede Hilfe!
mfg TheShadowAE