From: Elias P. <el...@us...> - 2004-11-07 22:27:09
|
On Sun, 2004-11-07 at 14:10 -0800, Dustin Dettmer wrote: > > typedef struct MENU > > > > char *text; - the text to display for > the menu item > > int (*proc)(void); - called when the menu item > is clicked > > struct MENU *child; - nested child menu > > int flags; - disabled or checked state > > void *dp; - pointer to any data you > need > > > Structure used to hold an entry of a menu. Read > chapter "GUI routines", > > section "GUI menus" for a description on how to > obtain/use this structure. > > Wouldnt it make sense for proc to get a copy of dp? > The docs mention that dp is free for you to use, but > you cant. Not passing dp to proc means that all menus > created using allegro's menuing system *must* be of > static length. Static length menus are rather > undesirable imho. > > I ran into this issue creating an editor that requires > an arbitrary amount of objects that the user can add, > remove and modify. Upon trying to make a submenu with > a list of each object for modifying, I realised it was > impossible and in the end used a hackish callback > system which defined 300+ extra functions and put a > limit on the amount of objects the editor can handle > (300). This problem could very easily be avoided if > proc was handed a copy of dp, so that the callback > function could 'know' which menu option called it. > Lookup "active_menu" in the docs. Does it help? -- Elias Pschernig |