use warnings; use strict; use Tk; my $logo = <<'logo_end'; /* XPM */ static char * logo_xpm[] = { "32 32 5 1", " c None", ". c #FD000A", "+ c #FD6463", "@ c #FEBEBE", "# c #FEFFFC", "################################", "################################", "################################", "################################", "################################", "################################", "################################", "################################", "################################", "########........##.....@########", "#########@....+####@.###########", "##########+....@###.@###########", "###########.....##++############", "###########@....+@.#############", "############+.....@#############", "#############.....##############", "#############@....@#############", "#############@.....#############", "#############.+....+############", "############++#+....@###########", "###########@.###.....###########", "###########.@###@....+##########", "##########++#####+....@#########", "########+....###........########", "################################", "################################", "################################", "################################", "################################", "################################", "################################", "################################"}; logo_end ; package Tk::Toplevel; sub InitObject{ my ($self,$args) = @_; $self->SUPER::InitObject($args); my $mw = $self->MainWindow; if ($mw->cget('-appicon')){ $self->afterIdle(sub{$self->iconimage($mw->cget('-appicon'))}) ; } } package MainWindow; sub Populate{ my ($self,$args) = @_; $self->SUPER::Populate($args); $self->ConfigSpecs(-appicondata => ['METHOD'], -appiconfile => ['METHOD'], -appicon => ['PASSIVE'] ); $self->configure(%$args); } sub appicondata{ my $self = shift; $self->configure(-appicon => $self->Pixmap(-data=>$_[0])); } sub appiconfile{ my $self = shift; $self->configure('-appicon' => $self->Pixmap(-file=>$_[0])); } package main; #my $mw = MainWindow->new(-appiconfile => 'logo.xpm'); my $mw = MainWindow->new(-appicondata => $logo); $mw->Toplevel(); $mw->MessageBox(-parent => $mw, -font => 'Helvetica 11', -message => 'a message'); MainLoop;