From: Brian M. <bmi...@hu...> - 2006-05-16 23:26:51
|
Hi all, I'm working on a GUI interface to create skins for my skin module. I'd = like to be able to set an event (using SetEvent('MouseDown', \&handle)), and = when I'd done with that event, reset the event to it's prior behavior. Is = there a way to do this? I've looked on MSDN, and the closest that I can find = is CloseHandle. However, there does not appear to be a way to get the = handle of the event. Brian Millham This message traveled at least 44,000 miles to reach you! Creator of the DW6000 Monitor http://www.millham.net/dw6000 bmi...@hu... --- avast! Antivirus: Outbound message clean. Virus Database (VPS): 0620-0, 05/15/2006 Tested on: 5/16/2006 7:23:46 PM avast! is copyright (c) 2000-2006 ALWIL Software. http://www.avast.com |
From: Jeremy W. <jez...@ho...> - 2006-05-17 08:08:42
|
>I'm working on a GUI interface to create skins for my skin module. I'd >like >to be able to set an event (using SetEvent('MouseDown', \&handle)), and >when >I'd done with that event, reset the event to it's prior behavior. Is there >a way to do this? I've looked on MSDN, and the closest that I can find is >CloseHandle. However, there does not appear to be a way to get the handle >of the event. I may be misunderstanding - but couldn't you do something like: my $original=\&Original; $control->SetEvent('MouseDown', $original )); ... #set new handler... $control->SetEvent('MouseDown', \&handle)); ... #set back to original $control->SetEvent('MouseDown', $original )); Cheers, jez. |
From: Brian M. <bmi...@hu...> - 2006-05-17 11:26:52
|
That's a possibility, but the original handler is set in the Skin.pm = module. The Skin Editor uses the Skin.pm module, but needs to override handlers = at certain times. You've given me an idea to go on. Brian Millham This message traveled at least 44,000 miles to reach you! Creator of the DW6000 Monitor http://www.millham.net/dw6000 bmi...@hu... -----Original Message----- From: Jeremy White [mailto:jez...@ho...]=20 Sent: Wednesday, May 17, 2006 4:09 AM To: bmi...@hu...; per...@li... Subject: RE: [perl-win32-gui-users] Unsetting an event >I'm working on a GUI interface to create skins for my skin module. I'd = >like >to be able to set an event (using SetEvent('MouseDown', \&handle)), and = >when >I'd done with that event, reset the event to it's prior behavior. Is = there >a way to do this? I've looked on MSDN, and the closest that I can find = is >CloseHandle. However, there does not appear to be a way to get the = handle >of the event. I may be misunderstanding - but couldn't you do something like: my $original=3D\&Original; $control->SetEvent('MouseDown', $original )); ... #set new handler... $control->SetEvent('MouseDown', \&handle)); ... #set back to original $control->SetEvent('MouseDown', $original )); Cheers, jez. --- avast! Antivirus: Outbound message clean. Virus Database (VPS): 0620-0, 05/15/2006 Tested on: 5/17/2006 7:21:56 AM avast! is copyright (c) 2000-2006 ALWIL Software. http://www.avast.com |
From: Robert M. <rm...@po...> - 2006-05-17 18:56:29
|
Brian Millham wrote: >> I'm working on a GUI interface to create skins for my skin module. I'd >> like to be able to set an event (using SetEvent('MouseDown', \&handle)), >> and when I'd done with that event, reset the event to it's prior behavior. >> Is there a way to do this? I've looked on MSDN, and the closest that I >> Can find is CloseHandle. However, there does not appear to be a >> way to get the handle of the event. Events in Win32::GUI don't have 'handles', they have subroutines that get called (in the NEM they are perl code references) Jeremy White wrote: > I may be misunderstanding - but couldn't you do something like: > > my $original=\&Original; > $control->SetEvent('MouseDown', $original )); > ... > #set new handler... > $control->SetEvent('MouseDown', \&handle)); > ... > #set back to original > $control->SetEvent('MouseDown', $original )); Brian Millham replied: > That's a possibility, but the original handler is set in the > Skin.pm module. The Skin Editor uses the Skin.pm module, but > needs to override handlers at certain times. The GetEvent() method returns the current code reference for a NEM event (or undef if there isn't one), so something like this should do you: my $old = $control->GetEvent('MouseDown'); ... $control->SetEvent('MouseDown', $old) if defined $old; Regards, Rob. -- Robert May Win32::GUI, a perl extension for native Win32 applications http://perl-win32-gui.sourceforge.net/ |