rendered paste body// Villys awsome menu defines#define C_MENU_START() menu conmenu;#define C_MENU_ITEM(id,string,dis) conmenu.addmenu(id*10+26000,string,dis);#define C_MENU_SUB_START(string,dis) conmenu.addmenu(-1,string,dis);#define C_MENU_SUB_END() conmenu.addmenu(-2,"",false);#define C_MENU_SEPARATOR() conmenu.addmenu(-3,"",false);#define C_MENU_END() return conmenu.getmenu();#define A_MENU_START() menu Actmenu;#define A_MENU_ITEM(id,string,dis) Actmenu.addmenu(id*10+25000,string,dis);#define A_MENU_SUB_START(string,dis) Actmenu.addmenu(-1,string,dis);#define A_MENU_SUB_END() Actmenu.addmenu(-2,"",false);#define A_MENU_SEPARATOR() Actmenu.addmenu(-3,"",false);#define A_MENU_END() return Actmenu.getmenu();#define E_MENU_START() menu Expmenu;#define E_MENU_ITEM(id,string,dis) Expmenu.addmenu(id*10+27000,string,dis);#define E_MENU_SUB_START(string,dis) Expmenu.addmenu(-1,string,dis);#define E_MENU_SUB_END() Expmenu.addmenu(-2,"",false);#define E_MENU_SEPARATOR() Expmenu.addmenu(-3,"",false);#define E_MENU_END() return Expmenu.getmenu();// Villys awsome menu class// Would be rad to add ownerdrawer menu items... hint hintclass menu {private: HMENU mainm; vector<HMENU> subs; vector<const char *> subns;public: menu(){ mainm=CreateMenu(); subs.push_back(mainm); } //~menu(); I do wonder, might I be leaking overhere? let the boat sink, I say! HMENU getmenu(){ return mainm; } void addmenu(int id, const char *str, bool disabled){ if(id>0 && !disabled){ AppendMenu(subs.back(), MF_BYPOSITION|MF_STRING|MF_GRAYED, id, str); } if(id>0 && disabled){ AppendMenu(subs.back(), MF_BYPOSITION|MF_STRING, id, str); } else if(id==-1){ HMENU hSubMenu = CreatePopupMenu(); subs.push_back(hSubMenu); subns.push_back(str); } else if(id==-2 && !disabled){ AppendMenu(subs[subs.size()-2], MF_BYPOSITION|MF_STRING | MF_POPUP, (UINT)subs.back(), subns.back()); subs.pop_back(); subns.pop_back(); } else if(id==-2 && disabled){ AppendMenu(subs[subs.size()-2], MF_BYPOSITION|MF_STRING | MF_POPUP, (UINT)subs.back(), subns.back()); subs.pop_back(); subns.pop_back(); } else if(id==-3){ AppendMenu(subs.back(), MF_BYPOSITION|MF_SEPARATOR, 0, NULL); } }};