Hi Laurent, and others, Here is a patch to enhance menus, by exposing more Windows options to Perl.
The new code is in the first part of the patch, I think you have already applied the second part of the patch. After the patch I give a usage sample. diff -c D:\Win32-GUI-rel-0.0.665\gui_options.cpp gui_options.cpp *** D:\Win32-GUI-rel-0.0.665\gui_options.cpp Wed Feb 27 03:09:22 2002 --- gui_options.cpp Sat Jan 3 20:55:41 2004 *************** *** 896,901 **** --- 896,913 ---- SwitchBit(mii->fMask, MIIM_TYPE, 1); next_i = i + 1; SwitchBit(mii->fType, MFT_SEPARATOR, SvIV(ST(next_i))); + } else if(strcmp(option, "-menubarbreak") == 0) { + SwitchBit(mii->fMask, MIIM_TYPE, 1); + next_i = i + 1; + SwitchBit(mii->fType, MFT_MENUBARBREAK, SvIV(ST(next_i))); + } else if(strcmp(option, "-menubreak") == 0) { + SwitchBit(mii->fMask, MIIM_TYPE, 1); + next_i = i + 1; + SwitchBit(mii->fType, MFT_MENUBREAK, SvIV(ST(next_i))); + } else if(strcmp(option, "-radiocheck") == 0) { + SwitchBit(mii->fMask, MIIM_TYPE, 1); + next_i = i + 1; + SwitchBit(mii->fType, MFT_RADIOCHECK, SvIV(ST(next_i))); } else if(strcmp(option, "-default") == 0) { SwitchBit(mii->fMask, MIIM_STATE, 1); next_i = i + 1; *************** *** 907,913 **** } else if(strcmp(option, "-enabled") == 0) { SwitchBit(mii->fMask, MIIM_STATE, 1); next_i = i + 1; ! SwitchBit(mii->fState, MFS_ENABLED, SvIV(ST(next_i))); } else if(strcmp(option, "-name") == 0) { next_i = i + 1; #ifdef PERLWIN32GUI_STRONGDEBUG --- 919,925 ---- } else if(strcmp(option, "-enabled") == 0) { SwitchBit(mii->fMask, MIIM_STATE, 1); next_i = i + 1; ! SwitchBit(mii->fState, MFS_DISABLED, ! SvIV(ST(next_i))); } else if(strcmp(option, "-name") == 0) { next_i = i + 1; #ifdef PERLWIN32GUI_STRONGDEBUG ===================================================================== $m_config = new Win32::GUI::Menu ( 'Config' => 'sConfig', ">&newest" => 'sNewest', ">&this year" => 'sThisYear', ">&last year" => 'sLastYear', ">&prior year" => 'sPriorYear', ">&all years" => 'sAllYear', ">&open file" => 'sFile', ">&show debug window" => 'sShowDos', ">&reset data directory" => 'sGetDataDir', ); if ( ! $m_config ) { & mydie ( $msgpfx . "m_config creation error: $^E\n" ); } $m_config->{'sFile'}->Change( -menubarbreak => 1 ); This causes the last three entries to be displayed in a separate menu column, with a vertical separator bar. I suppose one could instead parse special characters after the > in the menu entry, and set these automatically, but it would risk backwards compatibility with user's existing menu entry texts. -- Glenn -- http://nevcal.com/ =========================== The best part about procrastination is that you are never bored, because you have all kinds of things that you should be doing.