Child soll Parent mitnehmen

  • Moin,
    Ich möche das wenn sich das Child-Fenster verschiebt das Parent-Fenster auch mitgeht:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinApi.au3>
    #include <GDIPlus.au3>

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

    $hGui = GUICreate("Main", 195, 195, Default, Default, $WS_POPUP)
    WinSetTrans($hGui, "", 200)
    GUISetBkColor (0x000000)
    $hChild = GUICreate("Child", 200, 200, 0, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hGui)
    GUISetBkColor(0xFFFFFF)
    GUICtrlCreateLabel ("",0,0,200,200,Default,0x00100000)
    GUICtrlCreateButton("Test", 10, 10)
    _WinAPI_SetLayeredWindowAttributes($hChild, 0xFFFFFF)
    GUISetState(@SW_SHOW, $hChild)
    GUISetState(@SW_SHOW, $hGui)

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

    _GDIPlus_Startup()
    $Graphics = _GDIPlus_GraphicsCreateFromHWND($hChild)
    $PenRect = _GDIPlus_PenCreate(0xFFFFAA00, 10)
    _GDIPlus_GraphicsDrawRect($Graphics, 0, 0, 199, 199, $PenRect)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit

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

    EndSwitch
    WEnd

    [/autoit]

    Wenn man da auf den Rahmen klickt kann man ja das Child-Fenster verschieben, aber das Parent-Fenster soll mitgehen, gibt es da einen Style für oder muss ich da eine Funktion für basteln?

    THX im Vorraus

    mfg. Jam00

    Einmal editiert, zuletzt von Jam00 (22. August 2010 um 14:09)

    • Offizieller Beitrag

    So:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <WinApi.au3>
    #include <GDIPlus.au3>

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

    $hGui = GUICreate("Main", 195, 195, Default, Default, $WS_POPUP)
    WinSetTrans($hGui, "", 200)
    GUISetBkColor(0x000000)
    $hChild = GUICreate("Child", 200, 200, 0, 0, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hGui)
    GUISetBkColor(0xFFFFFF)
    GUICtrlCreateLabel("", 0, 0, 200, 200, Default, 0x00100000)
    GUICtrlCreateButton("Test", 10, 10)
    _WinAPI_SetLayeredWindowAttributes($hChild, 0xFFFFFF)
    GUISetState(@SW_SHOW, $hChild)
    GUISetState(@SW_SHOW, $hGui)

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

    GUIRegisterMsg($WM_MOVE, '_WM_MOVE')

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

    _GDIPlus_Startup()
    $Graphics = _GDIPlus_GraphicsCreateFromHWND($hChild)
    $PenRect = _GDIPlus_PenCreate(0xFFFFAA00, 10)
    _GDIPlus_GraphicsDrawRect($Graphics, 0, 0, 199, 199, $PenRect)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit

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

    EndSwitch
    WEnd

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

    Func _WM_MOVE($hWnd, $iMsg, $iwParam, $ilParam)
    Local $aGuiPos
    Switch $hWnd
    Case $hChild
    $aGuiPos = WinGetPos($hChild)
    WinMove($hGui, '', $aGuiPos[0], $aGuiPos[1])
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_WM_MOVE

    [/autoit]