Как передать дополнительные аргументы в 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 …

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

2

Решение

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

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

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

my $subref = sub{ onClick($arg1,$arg2) };
EVT_BUTTON($frame, $button, $subref);
2

Другие решения


По вопросам рекламы [email protected]