also ich habe mit Aaron3569 seinem code die selben Fehler beim scrollen, bei mir sieht das so aus wie große Viereckige Artefakte im oberenteil und etwas daraus hinaus der GUI aber diese verschwinden wieder sofort.
und ich hab ein Monster an PC ... nur die Grafikkarte ist etwas älter 1080ti ...
bei deiner Variante Kanashius habe ich diese Artefakte nicht, dafür flackert das angezeigte Bild beim Scrollen komplett, aber sieht vom Ansatz her richtiger aus als Variante 1.
wäre das so richtig einbaut?
Es ist ein interessantes Thema leider habe ich selbst keine eigene Lösung für Aaron3569 parat.
AutoIt
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#Include <WindowsConstants.au3>
#include <WinAPIConv.au3>
#include <GuiScrollBars.au3>
#include <GDIPlus.au3>
#include <WinAPISysWin.au3>
GUIRegisterMsg($WM_MOUSEWHEEL, "_WM_MOUSEWHEEL")
$hParent = GUICreate("Test", 900, 500, -1, -1)
GUISetState(@SW_SHOW, $hParent)
_GDIPlus_Startup()
$hImage = _GDIPlus_ImageLoadFromFile("amazing_sunset_3-wallpaper-3440x1440.jpg");bild
$hChild = GUICreate("Child", 150, 150, 0, 0, $WS_CHILD, $WS_EX_LAYERED, $hParent)
_WinAPI_UpdateLayeredWindowEx($hChild, -1, -1, _GDIPlus_BitmapCreateHBITMAPFromBitmap($hImage), 255, true)
GUISetState(@SW_SHOW, $hChild)
_GUIScrollBars_Init($hParent, -1, 100)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
ExitLoop
EndSwitch
WEnd
Func _WM_MOUSEWHEEL($hwnd, $Msg, $wParam, $lParam)
Local $iCurScrollPos = _GUIScrollBars_GetScrollInfoPos($hWnd, $SB_VERT)
Switch _WinAPI_HiWord($wParam) / 120
Case -1
_SendMessage($hParent, $WM_SETREDRAW, False) ; disable window drawing
_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, $iCurScrollPos + 5)
_SendMessage($hParent, $WM_SETREDRAW, True) ; enable window drawing
;~ _WinAPI_RedrawWindow($hParent) ; manually trigger a redraw
Case 1
_SendMessage($hParent, $WM_SETREDRAW, False) ; disable window drawing
_GUIScrollBars_SetScrollInfoPos($hWnd, $SB_VERT, $iCurScrollPos - 5)
_SendMessage($hParent, $WM_SETREDRAW, True) ; enable window drawing
EndSwitch
_WinAPI_RedrawWindow($hParent) ; manually trigger a redraw
EndFunc
Alles anzeigen