如何在wxperl EVT_BUTTON中传递其他参数

时间:2014-05-14 20:03:49

标签: c++ perl wxwidgets wxperl

我正在尝试将参数传递给处理wxPerl EVT_BUTTON事件的perl子例程。我明白,当我使用时:

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

我可以在onClick访问$ frame和$按钮及其功能。但是,我试图让子例程读取其他参数,主要是各种其他Wx::CheckBox值的值/状态。

我看到这个工作的唯一方法是使用全局变量并获取onClick来读取它们,但我想在其他地方重用onClick,并且使用全局变量是我最不喜欢的选项。 / p>

我尝试了各种各样的事情,例如:

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

我认为解决方案在于理解Perl引用的工作方式,因为我们在前面传递了\&onClick \&指示符。但我对Perl的这方面缺乏了解......

感谢任何帮助

1 个答案:

答案 0 :(得分:2)

试试这个,

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

它引用了anon子例程,然后调用onClick sub,它等同于:

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