enum {
MENUSYS_MAX = 8
};
enum {
SMSG_SETHIDE = 0,
SMSG_GETHIDE,
SMSG_SETENABLE,
SMSG_GETENABLE,
SMSG_SETCHECK,
SMSG_GETCHECK,
SMSG_SETTEXT
};
enum {
MENUS_POPUP = 0x0010,
MENUS_SYSTEM = 0x0020,
MENUS_MINIMIZE = 0x0030,
MENUS_CLOSE = 0x0040,
MENUS_CTRLMASK = 0x0070
};
enum {
MENUSTYLE_BOTTOM = 0x0001
};
typedef struct _smi {
const OEMCHAR *string;
const struct _smi *child;
MENUID id;
MENUFLG flag;
} MSYSITEM;
#ifdef __cplusplus
extern "C" {
#endif
BRESULT menusys_create(const MSYSITEM *item, void (*cmd)(MENUID id),
UINT16 icon, const OEMCHAR *title);
void menusys_destroy(void);
BRESULT menusys_open(int x, int y);
void menusys_close(void);
void menusys_moving(int x, int y, int btn);
void menusys_key(UINT key);
void *menusys_msg(int ctrl, MENUID id, void *arg);
void menusys_setstyle(UINT16 style);
#ifdef __cplusplus
}
#endif
// ---- MACRO
#define menusys_sethide(id, hide) \
menusys_msg(SMSG_SETHIDE, (id), (void *)(long)(hide))
#define menusys_gethide(id) \
(int)(menusys_msg(SMSG_GETHIDE, (id), NULL))
#define menusys_setenable(id, enable) \
menusys_msg(SMSG_SETENABLE, (id), (void *)(long)(enable))
#define menusys_getenable(id) \
(int)(menusys_msg(SMSG_GETENABLE, (id), NULL))
#define menusys_setcheck(id, checked) \
menusys_msg(SMSG_SETCHECK, (id), (void *)(long)(checked))
#define menusys_getcheck(id) \
(int)(menusys_msg(SMSG_GETCHECK, (id), NULL))
#define menusys_settext(id, str) \
menusys_msg(SMSG_SETTEXT, (id), (str))
RetroPC.NET-CVS <cvs@retropc.net>