Für den Physikunterricht möchte ich ei programm schreiben welches das Drehen eines Elektromotors simulieren soll.
Das Problem ist, dass kein Rotor angezeigt wird und das er sich nicht dreht.
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GDIPlus.au3>
#Include <WinAPI.au3>
TrayTip("ACHTUNG!","Durch Klick auf dieses Symbol lässt sich das Programm beenden!!",1000)
$hGUI = GUICreate("Elektromotor", 704, 780);,$DS_SETFOREGROUND))
GUICtrlCreateLabel("Multiplikator",610,640)
$combo = GUICtrlCreateCombo("",610,660,50,20)
$slider = GUICtrlCreateSlider(200,660,400,30)
$start = GUICtrlCreateButton("Strom an",50,660,100,30)
GUICtrlCreateLabel("Anmerkungen:"&@CRLF&" -Das Programm lässt sich nicht durch Klick auf X oder 'Strom aus' beenden"&@CRLF&" -Durch den Slider lässt sich die Geschwindigkeit einstellen"&@CRLF&"DIESES PROGRAMM IST NOCH IM BETA-ZUSTAND; DIESE PROBLEME WERDEN GEFIXT!!",10,700)
GUICtrlSetData($combo,"|1|2|3|4|5|6|","1")
_GDIPlus_StartUp()
$hImageStator = _GDIPlus_ImageLoadFromFile("Stator.png")
$hImageKontakt = _GDIPlus_ImageLoadFromFile("Schleifkontakte.png")
$hGraphic1 = _GDIPlus_GraphicsCreateFromHWND($hGUI)
$hImageRotor = _GDIPlus_ImageLoadFromFile("rotor_small.png")
$hGraphic = _GDIPlus_ImageGetGraphicsContext($hImageRotor)
$hMatrix = _GDIPlus_MatrixCreate()
_GDIPlus_MatrixTranslate($hMatrix,0,0)
_GDIPlus_MatrixRotate($hMatrix, 180, "False")
_GDIPlus_GraphicsSetTransform($hGraphic, $hMatrix)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImageRotor, 100, 100)
GUIRegisterMsg($WM_PAINT, "MY_WM_PAINT")
GUISetState()
Func MY_WM_PAINT($hWnd, $Msg, $wParam, $lParam)
_WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_UPDATENOW)
_GDIPlus_GraphicsDrawImage($hGraphic1, $hImageStator, 0, 0)
_GDIPlus_GraphicsDrawImage($hGraphic1, $hImageKontakt, 0, 0)
_GDIPlus_GraphicsDrawImage($hGraphic, $hImageRotor, 100, 100)
_WinAPI_RedrawWindow($hGUI, 0, 0, $RDW_VALIDATE)
Return $GUI_RUNDEFMSG
EndFunc
While 1
$msg = GUIGetMsg()
Select
Case $msg = $start
GUICtrlSetData($start,"Strom aus")
Do
$multi = GUICtrlRead($combo)
$msg = GUIGetMsg()
$speed = 100-GUICtrlRead($slider)
Sleep($speed*$multi)
$msg = GUIGetMsg()
Sleep($speed*$multi)
$msg = GUIGetMsg()
Sleep($speed*$multi)
$msg = GUIGetMsg()
Sleep($speed*$multi)
$msg = GUIGetMsg()
Sleep($speed*$multi)
$msg = GUIGetMsg()
Sleep($speed*$multi)
$msg = GUIGetMsg()
Until $msg = $start
If $msg = $GUI_EVENT_CLOSE Then Exit
GUICtrlSetData($start,"Strom an")
Case $msg = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
Was mache ich falsch?