GuiCtrtlSetImage verändert Position nach Resizing

  • hallo zusammen,

    folgendes beispiel zeigt mein problem:

    [autoit]


    GUICreate("Test",100,100,100,100)
    $But=GUICtrlCreateIcon("",-1,4,60,32,32)
    GUICtrlSetResizing($But,834)
    GUICtrlSetImage($But,@SystemDir & "\shell32.dll", 30)
    GUISetState();das icon ist unten links
    MsgBox(0,"","")
    WinMove("Test","",100,100,170,170,100) ;das icon ist nach wie vor unten links, wie es lt. setresizing auch sein soll...
    MsgBox(0,"","")
    GUICtrlSetImage($But,@SystemDir & "\shell32.dll", 31);das icon ist nun weiter oben
    MsgBox(0,"","")

    [/autoit]

    also das icon ist nach neuem guictrlsetimage auf seiner ursprünglichen x/y-position, welche es VOR dem resizing hatte...
    kann man das icon wechseln und die aktuelle position beibehalten bzw. mache ich etwas falsch?!?

    lgE

  • Echt übel, das einzige was dazu einfällt, ist das man bevor man das neue Icon setzt die Position abfragt wo es grade ist und nach dem neusetzen das neue Icon auf die Position schiebt. Es scheint so zu sein, das bei dem Resizing immer der Wert von dem Zeitpunkt genommen wird wo das Control erstellt wurde :(

    Vorschlag
    [autoit]


    GUICreate("Test",100,100,100,100)
    $But=GUICtrlCreateIcon("",-1,4,60,32,32)
    GUICtrlSetResizing($But,832)
    GUICtrlSetImage($But,@SystemDir & "\shell32.dll", 30)
    GUISetState();das icon ist unten links
    MsgBox(0,"Größe","Größe wird auf 170,170 geändert")
    $pos = ControlGetPos ("", "",$But)
    MsgBox(64,"",$pos[0] & "," & $pos[1])
    WinMove("Test","",100,100,170,170,100) ;das icon ist nach wie vor unten links, wie es lt. setresizing auch sein soll...

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

    Sleep(1000)
    MsgBox(0,"Info","Noch das alte Icon")

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

    $pos = ControlGetPos ("", "",$But)
    GUICtrlSetImage($But,@SystemDir & "\shell32.dll", 31)
    ControlMove ("","",$But,$pos[0],$pos[1])

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

    Sleep(1000)
    MsgBox(0,"Info","Das neue Icon")

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

    MsgBox(0,"Größe","Größe wird auf 270,270 geändert")
    WinMove("Test","",100,100,270,270,100) ;das icon ist nach wie vor unten links, wie es lt. setresizing auch sein soll...

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

    Sleep(1000)
    MsgBox(0,"Info","Fertig.....")

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

    Mfg
    Jens (McPoldy)

    Twitter: jkroeger

    Denn die Dinge, die wir erst lernen müssen, bevor wir sie tun, lernen wir beim Tun.(Aristoteles)