Функция GUICreate

 ↑  ←  Описание функции


GUICreate

Создаёт GUI окно.

GUICreate ( "title" [, width [, height [, left = -1 [, top = -1 [, style = -1 [, exStyle = -1 [, parent = 0 ]]]]]]] )

Параметры

title Заголовок окна.
width [необязательный] Ширина окна.
height [необязательный] Высота окна.
left [необязательный] Координата левого края. По умолчанию (-1), окно создаётся в центре. Если параметр задан, нужно также задать координату верхнего края.
top [необязательный] Координата верхнего края. По умолчанию (-1), в центре.
style [необязательный] Определяет стиль окна. Смотрите Стили элементов GUI в приложении.
Используйте -1 для стандартного стиля, который включает стили $WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP и $WS_SYSMENU.
Некоторые стили всегда включены: $WS_CLIPSIBLINGS и $WS_SYSMENU, если добавлены $WS_MAXIMIZEBOX или $WS_SIZEBOX.
exStyle [необязательный] Расширенные стили окна. Смотрите таблицу расширенных стилей ниже. По умолчанию -1.
parent [необязательный] Дескриптор предыдущего окна, для которого текущее окно становится дочерним.

Возвращаемое значение

Успех:Возвращает дескриптор окна.
Ошибка:Возвращает 0, если окно не может быть создано, и устанавливает @error равным 1.

Примечания

Расширенные стили имеющие префикс $WS_EX_ должны определятся в параметре exStyle, а стили без этого префикса помещаются в параметр style. Не следует их путать, так как они будут иметь свойства не соответствующие их назначению. Правильно выбранные стили создают окно, в котором размер клиентской области соответствует указанным величинам в параметрах width, height.

По умолчанию окно не способно изменить размер и не может быть развёрнуто. Поэтому $WS_SIZEBOX или $WS_MAXIMIZEBOX могут быть использованы в параметрах стиля.
При добавлении стиля не забывайте объединять его со стандартным, т.е. просто добавление стиля $WS_SIZEBOX не установит стили $WS_MINIMIZEBOX, $WS_CAPTION, $WS_POPUP и $WS_SYSMENU. Поэтому лучший способ создания окна с изменением размеров является $WS_OVERLAPPEDWINDOW.
При использовании $WS_EX_MDICHILD позиция указывается относительно клиентской области родительского окна.
$WS_EX_LAYERED позволяет иметь прозрачный пиксель на фоне пикселей окна.
$WS_CLIPCHILDREN и $WS_EX_COMPOSITED позволяют избавится от мерцания при изменении размера окна, например, содержащего элемент Edit.
$WS_EX_CONTROLPARENT в расширенных параметрах стиля позволяет разрешить перетаскивание окна за клиентскую область (например, если отключён стиль $WS_CAPTION).
$WS_EX_ACCEPTFILES позволяет элементам обрабатывать событие перетаскивания файлов (drag&drop) используя макросы @GUI_DragId, @GUI_DragFile, @GUI_DropId.

Чтобы объединить стили со стилем по умолчанию используйте BitOR($GUI_SS_DEFAULT_GUI, новый стиль,...).
Указанный размер окна задаёт размер клиентской области. Заголовок и границы сделают окно чуть больше, чем указано. Использование главного меню уменьшает высоту клиентской области окна.

Чтобы использовать переменные, указанные выше, вы должны в свой скрипт добавить строку #include <WindowsConstants.au3>.

Внимание: дескриптор, возвращаемый этой функцией является реальным дескриптором окна, точно такой же, как и при получении дескриптора функцией WinGetHandle().

См. также

GUISetParameters..., GUICtrlCreate..., GUIGetMsg, GUISwitch, GUIGetStyle, GUIDelete, WinGetHandle, GUICtrlSetDefBkColor, GUICtrlSetDefColor, GUIGetCursorInfo

Пример

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Example1()
Example2()

; Пример 1
Func Example1()
    Local $msg

    GUICreate("Мой GUI", -1, -1, -1, -1, $WS_OVERLAPPEDWINDOW + $WS_POPUP) ; Создаёт окно в центре экрана
    GUISetState(@SW_SHOW) ; показывает созданное окно

    ; Запускается цикл опроса GUI до тех пор пока окно не будет закрыто
    While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete()
EndFunc


; Пример 2
Func Example2()
    Local $hGui, $background, $pic, $basti_stay, $msg
    Local $sFile = @ScriptDir & "\..\GUI\logo4.gif"

    $hGui = GUICreate("Окно с фоном", 400, 100)
    ; фоновый рисунок
    $background = GUICtrlCreatePic(@ScriptDir & "\..\GUI\msoobe.jpg", 0, 0, 400, 100)

    GUISetState(@SW_SHOW)

    ; прозрачное дочернее окно MDI
    $pic = GUICreate("", 169, 68, 20, 20, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $hGui)
    ; прозрачный рисунок
    $basti_stay = GUICtrlCreatePic($sFile, 0, 0, 169, 68)
    GUISetState(@SW_SHOW)

    Do
        $msg = GUIGetMsg()

    Until $msg = $GUI_EVENT_CLOSE
EndFunc