UpdateLayeredWindow und Error-Code 8



  • 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:

    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);
        }
    

    Ich bedanke mich für jede Hilfe


Log in to reply