Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата 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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 22:36, 08-02-2009 | #2