[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 { ¬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
> >
> _______________________________________________
> 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