All pastes #438203 Raw Edit

Something

public cpp v1 · immutable
·published 2007-04-13 14:16 UTC
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);		}	}};