Простейшие диалоговые окна

messageBox <message_string> [title: <window_title_string>] [beep: <boolean>]
Отображает диалоговое окно с текстом сообщения и кнопкой OK. Параметр title определяет заголовок окна,
параметр beep – звуковой сигнал (true по умолчанию).

queryBox <message_string> [title: <window_title_string>] [beep: <boolean>]
Отображает диалоговое окно с текстом сообщения и кнопками Yes и No. Эта функция возвращает true,
если пользователь нажимает Yes и false – если No.

yesNoCancelBox <message_string> [title: <window_title_string>] [beep: <boolean>]
Отображает диалоговое окно с текстом сообщения и кнопками Yes и No и Cancel. Функция возвращает #yes, #no или #cancel,
в зависимости от нажатой кнопки.

Примеры: messageBox "Этого делать не нужно"; if queryBox "Хотите продолжить?" beep:false then print "Beep-beep disabled"

Плавающие диалоговые окна

Функция CreateDialog конвертирует свиток в плавающее окно. В отличие от плавающего свитка (RolloutFloater), плавающее окно состоит только из одного свитка. Эта особенность позволяет диалоговому окну иметь свойства модального, отображать фоновую картинку и обрабатывать события мыши в окне.

Синтаксис:
CreateDialog <Rollout> [<height> <width> <position_x> <position_y>] \
[pos:<Point2>] [width:<integer>] [height:<integer>] \
[bgcolor:<color>] [fgcolor:<color>] \
[bitmap:<bitmap>] [bmpstyle:<bmpstyle>] \
[menu:<RCMenu>] [style:<array>] [modal:<boolean>] \
[escapeEnable:<boolean>] [lockHeight:<boolean>] [lockWidth: <boolean>]

Если ключ modal:<boolean> равен true, диалог игнорирует любые действия пользователя, кроме происходящих в окне. Для закрытия окна применяется функция DestroyDialog() обычно ее вызывают в скрипте, назначенном на кнопку OK. Также пользователь может закрыть модальное окно нажав кнопку Esc, но только в том случае, когда для ключа escapeEnable установлено значение false или этот ключ вообще не задан.

Если необязательный (вообще говоря все ключи внутри [] - квадратных скобок являются необязательными) ключ escapeEnable равен true, то проверка в MAXScript на нажатие кнопки Esc для окна отключается, таким образом блокируется появление окне с сообщением "MaxScript Interrupt".

Если ключ lockHeight равен true, высота диалога не может быть изменена интерактивно. Ширина окна аналогично управляется ключом lockWidth.

Параметры:
<Rollout> - переменная, определяющая свиток, из которого создается диалоговое окно.

[pos:<Point2>] --ПО УМОЛЧАНИЮ: В ЦЕНТРЕ ОКНА 3ds max. Местоположение левого верхнего угла диалога относительно левого верхнего угла экрана.

[width:<integer>] --ПО УМОЛЧАНИЮ: 200 Ширина диалогового окна.

[height:<integer>] --ПО УМОЛЧАНИЮ: динамически изменяющаяся в зависимости от содержимого свитка Высота диалогового окна.

[bgcolor:<color>] --ПО УМОЛЧАНИЮ: (<system button color> - СИСТЕМНЫЙ ЦВЕТ КНОПКИ) Цвет фона диалогового окна.

[fgcolor:<color>] --ПО УМОЛЧАНИЮ: (color 0 0 0) Цвет переднего плана диалогового окна (цвет стандартного текста).

[bitmap:<bitmap>] --ПО УМОЛЧАНИЮ: undefined Фоновое изображение диалогового окна.

[bmpstyle:<key>] --ПО УМОЛЧАНИЮ: #bmp_center Способ отображения фоновой картинки. Может быть одним из следующих:
#bmp_center --ПО ЦЕНТРУ
#bmp_tile --ПОВТОРЯЮЩИЙСЯ ФОН
#bmp_stretch --РАСТЯНУТЫЙ ФОН

[menu:<RCMenu>] --ПО УМОЛЧАНИЮ: undefined Меню, отображающееся в области заголовка диалогового окна.

[style:<array>] --ПО УМОЛЧАНИЮ: #(#style_titlebar, #style_border, #style_sysmenu) Массив стилей, может включать в себя одно или несколько следующих ключевых слов:
#style_border создает диалоговое окно с двойной границей но без заголовка.
#style_titlebar создает диалоговое окно с заголовком.
#style_toolwindow создает диалоговое окно инструментариев которое имеет строку заголовка и предназначено для использования в качестве плавающей панели инструментов. Строка заголовка панели инструментов короче строки обычного заголовка, а сам заголовок печатается меньшим по размеру шрифтом.
#style_resizing создает диалоговое окно с толстой рамкой, которая может использоваться для изменения размеров окна.
#style_minimizebox создает диалоговое окно с кнопкой минимизации.
#style_maximizebox создает диалоговое окно с кнопкой максимизации.
#style_sysmenu создает диалоговое окно с оконным меню, находящимся в строке заголовка.
#style_sunkenedge задает для окна псевдотрехмерный вид, когда ребра границы выглядят выступающими.

Примечание: если ключевой параметр масива стилей не задан, по умолчанию используется следующий набор стилей: #style_titlebar, #style_border, #style_sysmenu.

События:
on <Rollout> open do вызывается в момент открытия диалогового окна.
on <Rollout> close do вызывается в момент закрытия диалогового окна.
on <Rollout> moved <Point2> do вызывается во время перемещения диалогового окна.
on <Rollout> resized <Point2> do вызывается во время изменения размеров диалогового окна.
on <Rollout> mousemove <Point2> do вызывается во время перемещения мыши внутри пользовательской области окна.
on <Rollout> lbuttondown <Point2> do вызывается в момент нажатия левой кнопки мыши в области окна.
on <Rollout> lbuttonup <Point2> do вызывается в момент отпускания левой кнопки мыши.
on <Rollout> lbuttondblclk <Point2> do вызывается в момент двойного щелчка левой кнопкой мыши в области окна.
on <Rollout> mbuttondown <Point2> do вызывается в момент нажатия средней кнопки мыши в области окна.
on <Rollout> mbuttonup <Point2> do вызывается в момент отпускания средней кнопки мыши.
on <Rollout> mbuttondblclk <Point2> do вызывается в момент двойного щелчка средней кнопкой мыши в области окна.
on <Rollout> rbuttondown <Point2> do вызывается в момент нажатия правой кнопки мыши в области окна.
on <Rollout> rbuttonup <Point2> do вызывается в момент отпускания правой кнопки мыши.
on <Rollout> rbuttondblclk <Point2> do вызывается в момент двойного щелчка правой кнопкой мыши в области окна.

Примечание: значение <Point2> при определении событий хранит координаты мыши в пределах пользовательской области диалогового окна. Координаты [0,0] соответствует верхнему левому углу окна.

Методы, связанные с параметрами диалогового окна
<Point2>GetDialogPos <Rollout> Возвращает координаты диалогового окна относительно левого верхнего угла экрана в формате Point2.

SetDialogPos <Rollout> <Point2> Устанавливает координаты диалогового окна относительно левого верхнего угла экрана. Здесь <Rollout> - свиток, используемый для создания диалогового окна, <Point2> - позиция, где находится диалоговое окно.

<Point2>GetDialogSize <rollout> Возвращает размеры пользовательской области окна. Эквивалент point2 <rollout>.width <rollout>.height

SetDialogBitmap <rollout> <bitmap> Устанавливает фоновое изображение для диалогового окна, построенного на основе свитка. Не работает, если свиток не является диалоговым окном. Значение undefined для изображения очистит текущий фон.

<bitmap>GetDialogBitmap <rollout> Возвращает изображение фона диалогового окна, построенного на основе свитка. Если свиток не является диалоговым окном, возвращается значение undefined.

DestroyDialog <Rollout> Закрывает диалоговое окно, созданное методом CreateDialog.