Как определить свою функцию обработчик диалоговых окон
Имеется возможность определить свою функцию-обработчик событий для любого диалогового окна. Там вы можете производить дополнительные проверки и действия. Здесь же ниже будет рассмотрено использование своей функции, которая вызывается только при нажатии на кнопку Далее. Полная функция обработчик определяется с помощью переменной Dfunc, а функция обработчик для кнопки Далее определяется с помощью Dnextfunc.
Полная функция-обработчик Dfunc
Рассмотрим небольшой пример использования Dfunc на диалоговом окне Путь установки.
Шаг 1
Укажите в 'Дополнительных опциях' имя вашего обработчика в переменной Dfunc. Замечание! Имена ваших функций должны заканчиваться на cmdproc.
Dfunc = mydlgpathcmdproc
Шаг 2
В начале скрипта добавьте команду Исходный код. Отметьте чекбокс 'Внешний исходный код'. В поле исходного кода вставьте функцию обработчик или ссылку на gentee файл с этой функцией
func uint mydlgpathcmdproc( uint wnd id ctl codedlg )
{
switch id
{
case $DLGINIT : print("Init\n")
case $IDC_PREV : print("Press Prev\n")
case $IDC_NEXT : print("Press Next\n")
}
}
return dlgpathcmdproc( wnd, id, ctl, codedlg )
}
или
include : $"c:\my files\myfunc.g"
Не забывайте вызывать стандартный обработчик из свой функции. Имена стандартных обработчиков и примеры функций обработчиков можно найти в поддиректории cmds\sources где установлен CreateInstall.
Функция обработчик по кнопке Далее Dnextfunc
Шаг 1
Укажите в 'Дополнительных опциях' имя вашего обработчика в переменной Dnextfunc. Замечание! Имена ваших функций должны заканчиваться на cmdproc.
Dnextfunc = nextpathcmdproc
Шаг 2
В начале скрипта добавьте команду Исходный код или вы можете использовать уже существующую команду с исходным кодом. В этом случае, просто вставляете туда вашу функцию. Отметьте чекбокс 'Внешний исходный код'. В поле исходного кода вставьте функцию обработчик или ссылку на gentee файл с этой функцией.
Функция должен быть один параметр типа uint, в котором будет передан идентификатор окна. Функция должна возвращать 1 для перехода далее или 0, если вы хотите запретить пользователю продолжение установки.
func uint nextpathcmdproc( uint wnd ) { str path macrox_getstr( "setuppath", path ) path.lower(); if path[0] != '0' { msg_warning( "Select the installation path on drive C:", "#lcaption#" ) return 0 } return 1 }