Как передать дополнительные аргументы в wxperl EVT_BUTTON

Я пытаюсь передать аргументы в подпрограмму perl, которая обрабатывает событие wxPerl EVT_BUTTON. Я понимаю, что когда я использую:

EVT_BUTTON($frame, $button, \&onClick);

У меня будет доступ к $frame и $button и его функциям в onClick, Тем не менее, я пытаюсь заставить подпрограмму читать дополнительные аргументы, в основном значение / статус различных других Wx::CheckBox ценности.

Единственный способ увидеть эту работу - использовать глобальные переменные и получить onClick читать их, но я хочу использовать повторно onClick где-то еще, и использование глобальных переменных - мой наименее любимый вариант.

Я пробовал разные вещи, которые потерпели неудачу, например:

EVT_BUTTON($frame, $button, \&onClick(arg1,arg2));

Я думаю, что решение заключается в понимании работы Perl-ссылок, когда мы проходим \&onClick с \& индикатор спереди. Но мне не хватает знаний в этом аспекте Perl...

Любая помощь приветствуется

1 ответ

Решение

Попробуй это,

EVT_BUTTON($frame, $button, sub{ onClick($arg1,$arg2) });

он дает ссылку на подпрограмму anon, которая вызывает onClick sub, и это эквивалентно:

my $subref = sub{ onClick($arg1,$arg2) };
EVT_BUTTON($frame, $button, $subref);
Другие вопросы по тегам