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:

    Spoiler anzeigen

    Ich bedanke mich für jede Hilfe

    Einmal editiert, zuletzt von TheShadowAE (15. Oktober 2010 um 11:59)

  • Hi,

    ich kenne mich mit GDI+ leider nicht besonders gut aus. Aber ich sehe, daß Du die Bitmap mit SelectObject in den Gerätekontext wählst und anschließend die Bitmap löschst, indem Du den Destruktor der Bitmap-Klasse aufrufst. Böses Foul !
    Wenn Du ein GDI-Objekt in einen Gerätekontext wählst, dann musst Du am Ende, wenn Du mit deiner Zeichenaktion fertig bist die alte Bitmap wieder in den Gerätekontext wählen !
    Siehe Bemerkungen


    Gruß
    Greenhorn


  • Ich dachte wiedereinmal ich lösche nur die GDI+ Bitmap, danke an so ein Pointerzeug sollte ich öfter denken, ihr seid besser als 3 C++ Foren! Respekt! :D

    EDIT:
    Klappt trotzdem nicht...

  • Hm, schwierig.

    Das Dein Compiler bei dieser Zeile nicht meckert wundert mich sehr:

    Code
    short k=UpdateLayeredWindow(hwnd,dc,NULL,&sz,cdc,&p,0,&blend,2);


    UpdateLayeredWindow gibt einen BOOL zurück (32bit).

    Code
    BOOL k=UpdateLayeredWindow(hwnd,dc,NULL,&sz,cdc,&p,0,&blend,2);


    Gruß
    Greenhorn


  • Soweit ich weiß gibt es beide Möglichkeiten, voller Code:

    Spoiler anzeigen
  • Jetzt gibt es bei mir keine Fehlermeldungen mehr. Es passiert aber auch nichts wirklich.


    Spoiler anzeigen
  • Ja das hab ich vergessen auszuklammern, das ist die variante vor UpdateLayeredWindow gewesen. Das soll zum funktionieren von dem Code führen, damit ich meine Aero/OwnStyle UDF in C++ nach programmieren kann und so mit Threads die Überlastung aus der Welt schaffen

    Greenhorn:
    Warnungen warscheinlich von der fehlenden Gdiplus.lib, di habe ich nur in den Optionen.
    Ich benutz den Standard VC++ Compiler, ich weiß nicht genau welcher das ist. Warnungen kommen bei mir keine

    PS: Danke an euch schonmal

    EDIT: ( Marthog)
    Bei mir kommt immernoch der Errorcode 8, bei dir scheint aber ja auch nicht zu klappen, der Strich der eigentlich gemalt werden sollte ist ja nicht auf dem Bildschirm

    Einmal editiert, zuletzt von TheShadowAE (15. Oktober 2010 um 20:54)

  • So bin weitergekommen: UpdateLayeredWindow gibt Immernoch einen Fehler, aber GetLastError gibt 0 wieder. Die Lösung war CreateDIBSection! Leider wird eben trotzdem nichts angezeigt, wie gesagt UpdateLayeredWindow gibt immernoch 0 zurück.

    Zitat von MSDN

    If the function succeeds, the return value is nonzero.

    If the function fails, the return value is zero. To get extended error information, call GetLastError.

    Danke im Vorraus

    Code:

    Spoiler anzeigen