[Cascavel-pm] Ajuda Anonymous Subroutines
Nilson Santos
acid06 em gmail.com
Sábado Março 12 08:29:05 PST 2005
Donato,
Eu fui olhar a documentação do NotifyIcon, você pode especificar a sub
que deseja ser chamada nos eventos, observe esse exemplo que eu fiz:
use warnings;
use strict;
use Win32::GUI;
my $mw = new Win32::GUI::Window(
-text => "NotifyIcon Test",
-size => [400, 300],
-pos => [200, 200]
);
for my $icon ("ICON1", "ICON2") {
my $notify = $mw->AddNotifyIcon(
-icon => Win32::GUI::Icon->new("${icon}.ico"),
-name => "Notify$icon",
-tip => "$icon",
-onClick => sub { ¬ify_click },
# ou, passando como string o nome da função
# -onClick => 'notify_click'
);
}
$mw->Show;
Win32::GUI::Dialog();
sub notify_click {
my ($window, $icon) = @_;
print "notify_click => window: $window, icon: $icon\n";
}
Isso é do Win32::GUI 1.0
Acho que nas versões antigas não tinha essa opção disponível...
-Nilson Santos F. Jr.
On Sat, 12 Mar 2005 01:54:21 -0300, Donato Azevedo <donatoaz em gmail.com> wrote:
> Olá pessoal!
> Eu preciso de uma ajudinha:
> Estou fazendo um script usando win32::GUI pra gerar Tray Icons pra
> janelas existentes (ele pega uma janela, bota um icone na tray bar pra
> ela e remove o antigo da barra de tarefas). O win32::GUI::NotifyIcon
> funciona assim:
> voce cria um icone:
> my $icon = new ... Icon;
> dai associa esse icone a uma posicao na tray bar:
> my $tray = new ... NotifyIcon
>
> dai quando voce clica nele ele tem um evento associado que responde
> pela subrotina:
> sub Nome_Do_$tray_Click {}
> mas como eu tou gerando a subrotina run time eu faço assim:
> sub btn3_Click {
> my $num = $main->lsb1->SelectedItem() + 1;
> my $window_name = $main->lsb1->GetString($main->lsb1->SelectedItem());
> if ($tray->{$window_name}) {
> $main->txf1->Text("it already exists");
> return 1;
> }
> $icon->{$window_name} = new Win32::GUI::Icon($main->txf2->Text());
> $tray->{$window_name} = $main->AddNotifyIcon(-name => $window_name,
> -id => $num,
> -icon => $icon->{$window_name}, -tip => $window_name);
> eval qq(
> sub main::${window_name}_Click {
> $main->->txf1->Text("donato"); }
> );
> 1;
> }
>
> mas quando eu clico no icone na tray bar ele da um erro:
> Undefined Subroutine &main::nome_do_tray_Click called at line 23.
> A linha 23 tem a chamada pro win32::GUI::Dialog();
>
> Obrigado pela atençao...
> --
> *******************************************
> Donato Azevedo
> Engenharia de Controle e Automação
> UFMG
> *******************************************
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
Mais detalhes sobre a lista de discussão Cascavel-pm