Hi,
When you use a string as an accelerator function name, it's call
<name>_Click event.
It's not try to call an "S3" sub but an "S3_Click" Sub.
Just change :
sub S3 { $W->Caption("Shift-3"); }
By :
sub S3_Click { $W->Caption("Shift-3"); }
And it's work ;o)
Laurent.
PS : From last documentation :
... when an accelerator is used, a corresponding <name>_Click event is
fired.
> The docs suggest "Shift-3" should work but in fact you need a reference!
>
> snip--->
>
> use Win32::GUI;
>
> $A = new Win32::GUI::AcceleratorTable(
> "Shift-1" => \&S1,
> "Shift-2" => sub { $W->Caption("Shift-2"); },
> "Shift-3" => "S3",
> );
>
> $W = new Win32::GUI::Window(-accel => $A, -width => 200);
> $W->Show(1);
> Win32::GUI::Dialog;
>
> sub S1 { $W->Caption("Shift-1"); }
> sub S3 { $W->Caption("Shift-3"); }
>