| If you change something in the win32maxgui module, you should be able to get your apps working. However, before you do any changes you should syncmds, since my line numbers refer to the latest version.
 Change in mod/brl.mod/win32maxgui.mod/win32gui/win32hwnd.cpp
 lines 15 to 21
 from
 extern "C"{
void brl_event_EmitEvent( BBObject *event );
BBObject *brl_maxgui_HotKeyEvent( int key,int mods,int owner );
void brl_win32maxgui_EmitWin32OSEvent( HWND hwnd,UINT msg,WPARAM wp,LPARAM lp,void *source );
}toextern "C"{
void brl_event_EmitEvent( BBObject *event );
BBObject *brl_maxgui_HotKeyEvent( int key,int mods,int owner );
void brl_win32maxgui_EmitWin32OSEvent( HWND hwnd,UINT msg,WPARAM wp,LPARAM lp,void *source );
int brl_win32maxgui_bb_GetMenuTag(int id);
BBObject* brl_win32maxgui_bb_GetMenuSource(int id);
}lines 133 to 141from
 	case WM_COMMAND:
		if( !lp ){
			if( wp>100 ){
				bbPostWin32GuiEvent( BBEVENT_MENUACTION,0,wp-100,0,0,0,&bbNullObject );
			}
			return 0;
		}
		src=findHwnd( (HWND)lp );
		break;to	case WM_COMMAND:
		if( !lp ){
			if( wp>100 ){
				bbPostWin32GuiEvent( BBEVENT_MENUACTION,0,brl_win32maxgui_bb_GetMenuTag(wp-100),0,0,0,brl_win32maxgui_bb_GetMenuSource(wp-100) );
			}
			return 0;
		}
		src=findHwnd( (HWND)lp );
		break;in mod/brl.mod/win32maxgui.mod/win32gui.bmxlines 321 to 329
 from
 	Method CreateGadget:TGadget(gadgetclass,label$,x,y,w,h,group:TGadget,style)
		Local	gadget:TWin32Gadget
		Local	wgroup:TWin32Gadget
		Local	hgroup
		Local	g,name$
		
		If Not group group=Desktop
		wgroup=TWin32Gadget(group)
		hgroup=wgroup.handleto 	Method CreateGadget:TGadget(gadgetclass,label$,x,y,w,h,group:TGadget,style)
		Local	gadget:TWin32Gadget
		Local	wgroup:TWin32Gadget
		Local	hgroup
		Local	g,name$,tag
		
		If Not group group=Desktop
		wgroup=TWin32Gadget(group)
		hgroup=wgroup.handlelines 367 to 384 from
 			Case GADGET_MENUITEM
				If wgroup And wgroup.class=GADGET_WINDOW
					hgroup=bbWindowMenu(TWin32Gadget(group).handle)
				EndIf
				If wgroup And wgroup.class=GADGET_DESKTOP
					hgroup=0
				EndIf
				g=bbCreateMenu(label,style,hgroup)
			Case GADGET_NODE	
				Throw "chunks"
			Case GADGET_CANVAS
				g=bbCreatePanel(x,y,w,h,hgroup,style|4)
		End Select
		gadget=TWin32Gadget.Create(gadgetclass,g,wgroup)
		gadget.name=name
		Return gadgetto 			Case GADGET_MENUITEM
				If wgroup And wgroup.class=GADGET_WINDOW
					hgroup=bbWindowMenu(TWin32Gadget(group).handle)
				EndIf
				If wgroup And wgroup.class=GADGET_DESKTOP
					hgroup=0
				EndIf
				tag=bb_SetMenuTag(style)
				g=bbCreateMenu(label,tag,hgroup)
			Case GADGET_NODE	
				Throw "chunks"
			Case GADGET_CANVAS
				g=bbCreatePanel(x,y,w,h,hgroup,style|4)
		End Select
		gadget=TWin32Gadget.Create(gadgetclass,g,wgroup)
		If gadgetclass=GADGET_MENUITEM bb_SetMenuSource tag,gadget
		gadget.name=name
		Return gadgetlines 514 to 526 from
 	Method SetHotKey(key,modifier)
		Local ev:TEvent
		If hotkey RemoveHotKey hotkey
		Select class
		Case GADGET_MENUITEM
			bbSetMenuHotKey handle,key,modifier	'decorates name only
			ev=CreateEvent( EVENT_MENUACTION,Null,bbMenuTag(handle) )
			hotkey=SetHotKeyEvent(key,modifier,ev,findowner())
		Default
			ev=CreateEvent( EVENT_GADGETACTION,Self )
			hotkey=SetHotKeyEvent(key,modifier,ev,findowner())
		End Select
	End Methodto 	Method SetHotKey(key,modifier)
		Local ev:TEvent
		If hotkey RemoveHotKey hotkey
		Select class
		Case GADGET_MENUITEM
			bbSetMenuHotKey handle,key,modifier	'decorates name only
			ev=CreateEvent( EVENT_MENUACTION,Self,bb_GetMenuTag(bbMenuTag(handle)) )
			hotkey=SetHotKeyEvent(key,modifier,ev,findowner())
		Default
			ev=CreateEvent( EVENT_GADGETACTION,Self )
			hotkey=SetHotKeyEvent(key,modifier,ev,findowner())
		End Select
	End Methodlines 528 to 540 from
 	Method Free()
		Local	kid:TGadget
		
		If parent
			parent.kids.Remove Self
			parent=Null
		EndIf
		
		For kid=EachIn kids
			kid.Free
		Nextto 	Method Free()
		Local	kid:TGadget
		If class=GADGET_MENUITEM and handle bb_UnsetMenuTag bbMenuTag(handle)
		
		If parent
			parent.kids.Remove Self
			parent=Null
		EndIf
		
		For kid=EachIn kids
			kid.Free
		Nextlines 958 to 984 from
 Function PostWin32GuiEvent( id,handle,data,mods,x,y,extra:Object ) 'nodebug
	Local source:TWin32Gadget=TWin32GUIDriver.GadgetFromHandle( handle )
' update local dimensions
	If id=EVENT_WINDOWSIZE And source source.UpdateSize		
	If id=EVENT_WINDOWMOVE And source source.UpdatePos	
' fill in extra field for treeview and list gadget events
	If id=EVENT_MENUACTION extra=TWin32Gadget.popupextra
	If source
		Select source.class
			Case GADGET_TREEVIEW 
'				data=TWin32GUIDriver.GadgetFromHandle( data )	'integer handle
				extra=TWin32GUIDriver.GadgetFromHandle( data )	'actual TGadget
			Case GADGET_LISTBOX,GADGET_TABBER,GADGET_TOOLBAR,GADGET_COMBOBOX
				If data>-1 
					extra=source.ItemExtra(data)
					Local flags=source.ItemFlags(data)
					If flags&GADGETITEM_TOGGLE source.SelectItem(data,2)
				EndIf
		End Select
	EndIf
' post it to MaxGui
	PostGuiEvent id,source,data,mods,x,y,extra
End Functionto Function PostWin32GuiEvent( id,handle,data,mods,x,y,extra:Object ) 'nodebug
	Local source:TWin32Gadget=TWin32GUIDriver.GadgetFromHandle( handle ),evsource:TGadget
' update local dimensions
	If id=EVENT_WINDOWSIZE And source source.UpdateSize		
	If id=EVENT_WINDOWMOVE And source source.UpdatePos	
' fill in extra field for treeview and list gadget events
	If id=EVENT_MENUACTION
		evsource=TGadget(extra)
		extra=TWin32Gadget.popupextra
	EndIf
	If source
		Select source.class
			Case GADGET_TREEVIEW 
'				data=TWin32GUIDriver.GadgetFromHandle( data )	'integer handle
				extra=TWin32GUIDriver.GadgetFromHandle( data )	'actual TGadget
			Case GADGET_LISTBOX,GADGET_TABBER,GADGET_TOOLBAR,GADGET_COMBOBOX
				If data>-1 
					extra=source.ItemExtra(data)
					Local flags=source.ItemFlags(data)
					If flags&GADGETITEM_TOGGLE source.SelectItem(data,2)
				EndIf
		End Select
	EndIf
' post it to MaxGui
	If Not evsource evsource=source
	PostGuiEvent id,evsource,data,mods,x,y,extra
End Function
Global bb_MenuTags:Tbb_MenuTag
Global bb_StartSearch
Type Tbb_MenuTag
	Field Prev:Tbb_MenuTag
	Field Succ:Tbb_MenuTag
	Field GUITag
	Field UserTag
	Field Source:Object
EndType
Function bb_SetMenuTag ( UserTag )
  While bb__Find(bb_StartSearch)
    bb_StartSearch:+1
  Wend
  Local tag:Tbb_MenuTag=New Tbb_MenuTag
  tag.Succ=bb_MenuTags
  tag.GUITag=bb_StartSearch
  bb_StartSearch:+1
  bb_StartSearch:&$0FFF
  tag.UserTag=UserTag
  If bb_MenuTags bb_MenuTags.Prev=tag
  bb_MenuTags=tag
  Return tag.GUITag
EndFunction
Function bb_SetMenuSource ( GUITag , Source:Object )
  bb__Find(GUITag).Source=Source
EndFunction
Function bb_GetMenuTag ( GUITag )
  Return bb__Find(GUITag).UserTag
EndFunction
Function bb_GetMenuSource:Object ( GUITag )
  Return bb__Find(GUITag).Source
EndFunction
Function bb_UnsetMenuTag ( GUITag )
  Local tag:Tbb_MenuTag=bb__Find(GUITag)
  If tag=bb_MenuTags bb_MenuTags=tag.Succ
  If tag.Succ tag.Succ.Prev=tag.Prev
  If tag.Prev tag.Prev.Succ=tag.Succ
EndFunction
Function bb__Find:Tbb_MenuTag ( GUITag )
  Local tag:Tbb_MenuTag = bb_MenuTags
  While tag
    If tag.GUITag=GUITag Return tag
    tag=tag.Succ
  Wend
EndFunctionI tested and it seems to work with these changes. However they'll get overwritten as soon as you syncmod the next time.If this really behaves different on Mac/Win32 I'd say it's a bug.
 
 
 |