> How can you change the -icon after it already exists in the 
> system tray?

Don't know how supported it is but this is what I had to do is call
Win32::GUI::NotifyIcon::Modify directly (it is located in the GUI.xs file
for those with the source). Example works off the click on the tray icon.

Don't forget to get the -id bit the same across all calls.... Other problem
I came across was the limit of 63 chars for the -tip windows doesn't like it
and the good doctor will come and visit if you make it too long.

JB


== Begin Perl Code ==
use Win32::GUI;

my $IconMode = 1;

my $icoEna = new Win32::GUI::Icon("DateTime.ico");
my $icoDis = new Win32::GUI::Icon("DisabledDateTime.ico");
my $Trace = 1;

my $win = Win32::GUI::Window->new(
   -name   => 'WIN',
   -text   => 'Recorder',
   -width  => 200,
   -height => 200,
);

my $ni = Win32::GUI::NotifyIcon->new(
   $win, 
   -name   => "NI", 
   -id     => 1,
   -icon   => $icoEna,
   -tip    => "Recording",
);

$win->Enable();
$win->Show();

Win32::GUI::Dialog();

sub WIN_Terminate {
   print "$0: ".(caller(0))[3]."::Start\n" if ($Trace); 

  -1;
}

sub NI_Click {
   print "$0: ".(caller(0))[3]."::Start\n" if ($Trace); 

   if ($IconMode) {
      $IconMode = 0;
      Win32::GUI::NotifyIcon::Modify(
         $win, 
         -id => 1, 
         -icon => $icoDis, 
         -tip => "Not Recording",
      );
   } else {
      $IconMode = 1;
      Win32::GUI::NotifyIcon::Modify(
         $win, 
         -id => 1, 
         -icon => $icoEna, 
         -tip => "Recording",
      );
   }

   1;
}
== End Perl Code ==

Reply via email to