Что нового

Перехват и блокировка перемещений окна

ZlojBoter

Новичок
Сообщения
55
Репутация
0
Задача такая. Скрипт генерирует некоторое количество дочерних окон, которые могут друг на друга налагаться, при этом, их "Z-порядок", при клике по этим окнам(или элементам, представленным на этих окнах) должен оставаться неизменным. Именно с этим и проблемы. При клике на окно/элемент, оно выходит наверх всех окон.
Я пробовал решать этот вопрос при помощи регистрации
Код:
WM_WINDOWPOSCHANGED
(возможно, я неправильно понимаю, и это событие отлавливается уже после того как оно произошло) и отлова этого события. Событие ловит, однако, не удается это событие "заблокировать"
В справке по
Код:
GUIRegisterMsg
написано следующее:
"По умолчанию после окончания функции выполнятся внутренний обработчик сообщения AutoIt.
Этого не произойдёт, если ваш Return имеет значение (Смотрите WM_COMMAND в примере) или, если вы используете 'Return' без какого либо значения.
Используя Return без любого возвращаемого параметра внутренний обработчик сообщения AutoIt (если он есть для этого сообщение) не будет выполнятся!"

Например, такой код не работает(окно перетаскивается, z-порядок меняется) :
Код:
Func WM_WINDOWPOSCHANGED($hWnd, $Msg, $wParam, $lParam)
    ; получает координаты сторон окна
    Local $sRect = DllStructCreate("Int[6]", $lParam), _
        $ykazatel = DllStructGetData($sRect, 1, 1), _
        $chislo = DllStructGetData($sRect, 1, 2), _
        $left = DllStructGetData($sRect, 1, 3), _
        $top = DllStructGetData($sRect, 1, 4), _
        $WinSizeX = DllStructGetData($sRect, 1, 5), _
        $WinSizeY = DllStructGetData($sRect, 1, 6)
Return 0
EndFunc


Есть ли способ оставить окно в том положении, в котором оно было создано(или задано программно, это я о Z-порядке, который я менять умею), и иметь возможность кликать по нему(само собой, чтобы события кликов по элементам происходили)? Т.е. чтобы пользовательские клики его не трогали.
 
Верх