PNG Image Problem

  • Hallo Leute,

    Mitlerweile bin ich echt verzweifelt!
    Ich habe in meinem Proggi ein PNG Logo und ein Tab Control. Um auf "WM_PAINT" Windows Message ID's zu reagieren habe ich eine kleine Funktion, die das PNG Logo wieder neu zeichnet. Soweit funktioniert das auch alles sehr gut, nur wenn ich zwischen den Tabs hin und her schalte, dann wird mein Logo immer dunkler, da jedes mal eine "WM_PAINT" ID vom GUI kommt und das Logo wieder und wieder neu gezeichnet wird, obwohl sich nur die Tab Elemente ändern und nicht der ganze GUI!

    Wie kann man das verhindern?

    Hier mal ein kleines Beispiel da ich nicht sicher bin, ob man das mit meiner bescheidenen Erklärung verstehen kann (einfach zwischen den Tabs hin und her wechseln um den Effekt zu sehen => Logo wird immer dunkler):

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <GDIPlus.au3>
    #include <WinAPI.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $hGUI, $hImage, $hGraphic, $hImage1

    [/autoit][autoit][/autoit][autoit]

    ; Create GUI
    $hGUI = GUICreate("Show PNG", 250, 250)
    GUISetBkColor(0x00E0FFFF)

    [/autoit][autoit][/autoit][autoit]

    ; Load PNG image
    _GDIPlus_StartUp()
    $hImage = _GDIPlus_ImageLoadFromFile(".\example.png")
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)

    [/autoit][autoit][/autoit][autoit]

    ; Create GUI
    $tab = GUICtrlCreateTab(10, 10, 200, 100)
    $tab0 = GUICtrlCreateTabItem("tab0")
    GUICtrlCreateLabel("label0", 30, 80, 50, 20)
    $tab0OK = GUICtrlCreateButton("OK0", 20, 50, 50, 20)
    $tab0input = GUICtrlCreateInput("default", 80, 50, 70, 20)

    [/autoit][autoit][/autoit][autoit]

    $tab1 = GUICtrlCreateTabItem("tab----1")
    GUICtrlCreateLabel("label1", 30, 80, 50, 20)
    $tab1combo = GUICtrlCreateCombo("", 20, 50, 60, 120)
    GUICtrlSetData(-1, "Trids|CyberSlug|Larry|Jon|Tylo", "Jon")
    $tab1OK = GUICtrlCreateButton("OK1", 80, 50, 50, 20)

    [/autoit][autoit][/autoit][autoit]

    $tab2 = GUICtrlCreateTabItem("tab2")
    GUICtrlCreateLabel("label2", 30, 80, 50, 20)
    $tab2OK = GUICtrlCreateButton("OK2", 140, 50, 50)

    [/autoit][autoit][/autoit][autoit]

    GUICtrlCreateTabItem("")

    [/autoit][autoit][/autoit][autoit]

    GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")

    [/autoit][autoit][/autoit][autoit]

    GUISetState()

    [/autoit][autoit][/autoit][autoit]

    ; Loop until user exits
    do
    until GUIGetMsg() = $GUI_EVENT_CLOSE

    [/autoit][autoit][/autoit][autoit]

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hImage)
    _GDIPlus_ShutDown()

    [/autoit][autoit][/autoit][autoit]

    ; Draw PNG image
    Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 10, 150)
    _WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]

    Das PNG Logo ist im Anhang.

    Ich bin für jede Hilfe dankbar, da mein Programm bis Ende dieser Woche fertig sein muss.!