[Cascavel-pm] Ajuda Anonymous Subroutines

Donato Azevedo donatoaz em gmail.com
Sábado Março 12 09:23:33 PST 2005


Okay, vou pegar o 1.0 (pra falar a verdade só não peguei até hoje por
teimosia...)

Eu avaliava o eval sim, mas tirei essa parte do codigo.
Obrigado aos dois


On Sat, 12 Mar 2005 13:29:05 -0300, Nilson Santos <acid06 em gmail.com> wrote:
> 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 { &notify_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
> >
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
> 


-- 
*******************************************
              Donato Azevedo
Engenharia de Controle e Automação
                      UFMG
*******************************************


Mais detalhes sobre a lista de discussão Cascavel-pm