Цитата beve:
можно ли сделать чтобы Дочернее окно так прилеплялись к окну нужной мне проги »
|
Можно, примерно так:
Код:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>
;
$hParentWnd = GUICreate("Какая то программа", 600, 60)
;$Button = GUICtrlCreateButton("просто кнопка для примера", 0, 0, 160, 21)
;Следуюзая строка может быть раскомментирована, в этом случае активное окно будет родительским окном
;$hParentWnd = WinGetHandle("[ACTIVE]")
$aParent_Pos = WinGetPos($hParentWnd)
$hChildWnd = GUICreate("Дополнительное окно", 600, 70, $aParent_Pos[0], $aParent_Pos[1] + $aParent_Pos[3] + 10, _
BitOR($WS_POPUP, $WS_BORDER), $WS_EX_TOOLWINDOW, $hParentWnd)
GUISetBkColor(0x09FF00)
GUICtrlCreateLabel("Дочернее окно", 5, 5, 185, 25)
GUISetState(@SW_SHOW, $hParentWnd)
GUISetState(@SW_SHOW, $hChildWnd)
$iTimer_ID = _Timer_SetTimer($hChildWnd, 10, "_WinMove_Proc")
While 1
$aMsg = GUIGetMsg(1) ;using the "advanced" parameter
Switch $aMsg[0]
Case $GUI_EVENT_CLOSE
If $aMsg[1] = $hParentWnd Then ExitLoop
;Case $GUI_EVENT_CLOSE ;Этот Case нужен только если на дочернее окно $chForm не будет установлен стиль $WS_POPUP.
;If $aMsg[1] = $hChildWnd Then GUISetState(@SW_HIDE, $hChildWnd)
;Case $Button
;If Not BitAND(WinGetState($hChildWnd), 2) Then
;GUISetState(@SW_SHOW, $hChildWnd)
;Else
;GUISetState(@SW_HIDE, $hChildWnd)
;EndIf
EndSwitch
WEnd
_Timer_KillTimer($hChildWnd, $iTimer_ID)
Func _WinMove_Proc($hWnd, $nMsg, $iIDTimer, $dwTime)
Local $aParent_Pos = WinGetPos($hParentWnd)
Local $aChild_Pos = WinGetPos($hWnd)
If $aParent_Pos[0] <> $aChild_Pos[0] Or $aParent_Pos[1] <> ($aChild_Pos[1] - $aParent_Pos[3] - 10) Then _
WinMove($hWnd, "", $aParent_Pos[0], $aParent_Pos[1] + $aParent_Pos[3] + 10, $aParent_Pos[2])
EndFunc