#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Local $iGUIWidth = 250, $iGUIHeight = 250, $flag = 0
Global $hParentWin = GUICreate("Parent GUI", $iGUIWidth, $iGUIHeight)
$Button1 = GUICtrlCreateButton("Button1", 20, 20, 75, 25)
$aParentWin_Pos = WinGetPos($hParentWin, "")
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_NCHITTEST, 'WM_NCHITTEST')
$hChildWin = GUICreate("Child GUI", $iGUIWidth, $iGUIHeight, $aParentWin_Pos[0] + 100, $aParentWin_Pos[1] + 100, $WS_POPUP, -1, $hParentWin)
GUISetBkColor(0x253E23)
GUISetState(@SW_HIDE, $hChildWin)
GUISwitch($hParentWin)
While 1
$aMsg = GUIGetMsg(1)
Select
Case $aMsg[0] = $GUI_EVENT_CLOSE
If $aMsg[1] = $hChildWin Then
GUISwitch($hChildWin)
GUIDelete()
ElseIf $aMsg[1] = $hParentWin Then
GUISwitch($hParentWin)
GUIDelete()
Exit
EndIf
Case $aMsg[0] = 3
If $flag = 0 Then
GUISetState(@SW_SHOW, $hChildWin)
$flag = 1
Else
GUISetState(@SW_HIDE, $hChildWin)
$flag = 0
EndIf
EndSelect
WEnd
Func WM_NCHITTEST($hWnd, $Msg, $wParam, $lParam)
Local $iProc = DllCall('user32.dll', 'int', 'DefWindowProc', 'hwnd', $hWnd, 'int', $Msg, 'wparam', $wParam, 'lparam', $lParam)
If $iProc[0] = $HTCLIENT Then
If $hWnd = $hParentWin Then Return $HTCAPTION
EndIf
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_NCHITTEST