The solution, apparently, is that the reference to the Menu object must be passed back to the main script; apparently the menu-ref is NOT encapsulated inside of the Window object that contains it... which is counter-intuitive, and unlike any other perl module I have ever seen...
---------------------------------------- this pseudo-code does NOT work: my $window=Module->new; $window->Show(); Win32::GUI::Dialog(); package Module; $menu = Win32::GUI::MakeMenu (blah blah) $window=Win32::GUI::Window->new(-menu => $menu) return $window ----------------------------------------- this pseudo-code DOES work: my ($window, $menu)=Module->new; $window->Show(); Win32::GUI::Dialog(); package Module; $menu = Win32::GUI::MakeMenu (blah blah) $window=Win32::GUI::Window->new(-menu => $menu) return ($window, $menu) ------------------------------------------- I have no idea why it worked on one OS and not the other, but still... it is the most bizzarre thing I have ever come across while using Perl! It is such bizzarre behavior that I am tempted to call it a bug in Win32GUI, rather than just a quirk... Anyway, in case anyone else ever has this problem, that is the solution :-) Merry Christmas everyone! M