_GetChildCoor
Возвращает координаты дочернего окна приближенные к родительскому, но в видимой рабочей области экрана
#Include <UserGUI.au3>
_GetChildCoor ( $hGui, $iWidth, $iHeight [, $iCenter = 1 [, $iStyle = 2 [, $iFixed = 0 [, $iMargin = 0 ]]]] )
Параметры
$hGui | Дескриптор родительского окна |
$iWidth |
Ширина дочернего окна |
$iHeight |
Высота дочернего окна |
$iCenter |
[необязательный] Выравнивание дочернего окна 0 - По левому верхнему углу 1 - (по умолчанию) По центру |
$iStyle |
[необязательный] Стиль окна, который определяет ширину границ 0 - Окно без границ, ширина границы 0 пиксель 1 - Окно со стилем $WS_BORDER, обычно ширина этой границы 1 пиксель 2 - (по умолчанию) Окно не изменяемое в размерах, обычно ширина этой границы 3 пикселя 3 - Окно изменяемое в размерах ($WS_OVERLAPPEDWINDOW), обычно ширина этой границы 4 пикселя (WinXP), 8 пиксель (Win7) |
$iFixed | [необязательный] Если 1, то исправляет Y-координату окна при помещении его снизу при отсутствии стиля $WS_CAPTION или $WS_DLGFRAME |
$iMargin |
[необязательный] Отступ от краёв |
Возвращаемое значение
Успех: | Возвращает массив следующего формата: |
[0] - Ширина окна | |
[1] - Высота окна | |
[2] - X-координата окна | |
[3] - Y-координата окна |
Примечания
Если дочернее окно создаётся в центре экрана, то требует перемещения мыши и внимания, поэтому предпочтительнее создавать окно в центре родительского окна. Кроме того, если окно перемещено за пределы экрана, то функция принуждает создать окно полностью видимым.Пример
#include <WindowsConstants.au3>
#include <UserGUI.au3>
$hGui = GUICreate('My program', 420, 250, 50, 50)
$MsgBox = GUICtrlCreateButton("Button", 20, 20, 90, 30)
GUISetState()
While 1
Switch GUIGetMsg()
Case $MsgBox
_MsgBox($hGui)
Case -3
Exit
EndSwitch
WEnd
Func _MsgBox($hGui)
Local $EditBut, $hGui1, $aRect, $msg, $StrBut
$aRect = _GetChildCoor($hGui, 410, 240)
GUISetState(@SW_DISABLE, $hGui)
$hGui1 = GUICreate('Сообщение', $aRect[0], $aRect[1], $aRect[2], $aRect[3], BitOR($WS_CAPTION, $WS_SYSMENU, $WS_POPUP), -1, $hGui)
GUICtrlCreateLabel('Что будем делать сейчас?', 20, 10, 180, 23)
$EditBut = GUICtrlCreateButton('Редактор', 10, 40, 80, 25)
$StrBut = GUICtrlCreateButton('Калькулятор', 100, 40, 80, 25)
GUISetState(@SW_SHOW, $hGui1)
While 1
Switch GUIGetMsg()
Case $EditBut
Run('Notepad.exe')
Case $StrBut
ShellExecute('Calc.exe')
Case -3
GUISetState(@SW_ENABLE, $hGui)
GUIDelete($hGui1)
ExitLoop
EndSwitch
WEnd
EndFunc