From: John, G. <gj...@qu...> - 2007-10-30 10:33:02
|
Hi, I'm trying to write the event handlers for menu item clicks. I have sub-classed Win32::GUI::Window to provide the main window for my application. This all works nicely, except that I've just added a menu to my main window and I can't seem to figure out how to access any object data from my _Click handlers. The program below reproduces this issue. What I would like is to be able to access the main window as $self in sub Exit_Click, but it's undefined. #!/usr/bin/perl -w package MyWindow; use Win32::GUI(); @MyWindow::ISA =3D qw (Win32::GUI::Window); sub new { my $proto =3D shift; my $class =3D ref($proto) || $proto; my %params =3D @_; $params{-menu} =3D Win32::GUI::Menu->new( "&File" =3D> "File", ">E&xit" =3D> "MyWindow::Exit", ); my $self =3D $class->SUPER::new(%params); bless $self, $class; return $self; }; sub Exit_Click { my $self =3D shift; print ref($self), "\n"; print "File->Exit Clicked"; return -1; } 1; package main; my $window =3D new MyWindow(-height =3D> 200, -width =3D> 300); $window->Show(); Win32::GUI::Dialog(); __END__ Is there any way to call the _Click event handlers as object methods rather than class methods? Cheers, Gareth John |
Re: [perl-win32-gui-users] How to call menu item click event
handlersas methods rather than classes?
From: Jason P. <jp...@da...> - 2007-10-30 18:38:07
|
Here is the problem: You are using OEM methodology inside a package. OEM was designed to operate in the MAIN namespace. Switch to the NEM and you should be right as rain. (e.g. inside of new for the menu use -onClick => &menu_click ) -----Original Message----- From: per...@li... [mailto:per...@li...] On Behalf Of John, Gareth Sent: Tuesday, October 30, 2007 6:33 AM To: per...@li... Subject: [perl-win32-gui-users] How to call menu item click event handlersas methods rather than classes? Hi, I'm trying to write the event handlers for menu item clicks. I have sub-classed Win32::GUI::Window to provide the main window for my application. This all works nicely, except that I've just added a menu to my main window and I can't seem to figure out how to access any object data from my _Click handlers. The program below reproduces this issue. What I would like is to be able to access the main window as $self in sub Exit_Click, but it's undefined. #!/usr/bin/perl -w package MyWindow; use Win32::GUI(); @MyWindow::ISA = qw (Win32::GUI::Window); sub new { my $proto = shift; my $class = ref($proto) || $proto; my %params = @_; $params{-menu} = Win32::GUI::Menu->new( "&File" => "File", ">E&xit" => "MyWindow::Exit", ); my $self = $class->SUPER::new(%params); bless $self, $class; return $self; }; sub Exit_Click { my $self = shift; print ref($self), "\n"; print "File->Exit Clicked"; return -1; } 1; package main; my $window = new MyWindow(-height => 200, -width => 300); $window->Show(); Win32::GUI::Dialog(); __END__ Is there any way to call the _Click event handlers as object methods rather than class methods? Cheers, Gareth John ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Perl-Win32-GUI-Users mailing list Per...@li... https://lists.sourceforge.net/lists/listinfo/perl-win32-gui-users http://perl-win32-gui.sourceforge.net/ |