You were close to getting this to work.  He's your T1_Timer sub:

sub T1_Timer {
    if ($trigger % 2) {
        $ni->Change(-icon => $icon_yes,
                    -id => 100);
        $mw->Enable();
        $mw->Show();
        $mw->Restore() if $mw->IsIconic();
    }
    else {
        $ni->Change(-icon => $icon_no,
                    -id => 100);
        $mw->CloseWindow() unless $mw->IsIconic();
        $mw->Hide();
        $mw->Disable();
    }
    $trigger++;
}

Brian Millham
This message traveled at least 44,000 miles to reach you!
Creator of the DW6000 Monitor
http://www.millham.net/dw6000
[EMAIL PROTECTED] 

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Ñåðãåé ×åðíèåíêî
Sent: Friday, August 12, 2005 9:28 AM
To: perl-win32-gui-users@lists.sourceforge.net
Subject: [perl-win32-gui-users] changing notify icon

Здравствуйте, perl-win32-gui-users,

  My goal in script below is change tray icon of NotifyIcon object in
  runtime on timer event. Icon stays unchanged. Why it is? How can I
  change icon in other way?

use strict;
use Win32::GUI;

my $trigger = 0;

my $mw = Win32::GUI::Window->new(-name => 'mw',
                                -size => [400, 400],
                                -pos => [200, 200],
                                -title => "FormsTest",
                                -onTerminate => sub{return -1;},
                                -onTimer => \&T1_Timer,
                                -onMinimize => sub{my $self = shift;
                                                   $self->Hide();
                                                   $self->Disable();},
                                );


my $icon_no = Win32::GUI::Icon->new('no!.ico');
my $icon_yes = Win32::GUI::Icon->new('yes!.ico');

my $ni = $mw->AddNotifyIcon(-icon => $icon_yes,
                            -id => 100,
                            -onClick => sub{$mw->Enable(); $mw->Show();
                                            $mw->Restore();}
                            );
my $t1 = Win32::GUI::Timer->new($mw, 'T1', 2000);

$mw->Disable();
Win32::GUI::Dialog;

sub T1_Timer {
    if ($trigger % 2) {
        $ni->Change(-icon => $icon_yes);
        $mw->Enable();
        $mw->Show();
        $mw->Restore() if $mw->IsIconic();
    }
    else {
        $ni->Change(-icon => $icon_no);
        $mw->CloseWindow() unless $mw->IsIconic();
        $mw->Hide();
        $mw->Disable();
    }
    $trigger++;
}
__END__
  Thanks!
-- 
С уважением,
 Сергей                          mailto:[EMAIL PROTECTED]
---
avast! Antivirus: Inbound message clean.
Virus Database (VPS): 0532-5, 08/12/2005
Tested on: 8/12/2005 6:03:31 PM
avast! is copyright (c) 2000-2003 ALWIL Software.
http://www.avast.com



    
---
avast! Antivirus: Outbound message clean.
Virus Database (VPS): 0532-5, 08/12/2005
Tested on: 8/12/2005 6:31:13 PM
avast! is copyright (c) 2000-2003 ALWIL Software.
http://www.avast.com





Reply via email to