#include PopUpMenu::PopUpMenu(void) : mSize(0), mlpMenuItem(0) { } PopUpMenu::PopUpMenu(const PureMenu &topLevelMenu) : PureMenu((HMENU)topLevelMenu), mlpMenuItem(0) { size(::GetMenuItemCount((PureMenu&)*this)); } void PopUpMenu::size(long newSize) { if(mlpMenuItem) { #ifdef __FLAT__ while(::GlobalUnlock((HGLOBAL)::GlobalHandle((LPCVOID)mlpMenuItem))); ::GlobalFree((HGLOBAL)::GlobalHandle((LPCVOID)mlpMenuItem)); #else while(::GlobalUnlock((HGLOBAL)(FP_SEG(mlpMenuItem)-1))); ::GlobalFree((HGLOBAL)(FP_SEG(mlpMenuItem)-1)); #endif mlpMenuItem=0; } if(0==(mSize=newSize)){mlpMenuItem=0;return;} mlpMenuItem=(MenuItem FAR*)::GlobalLock(::GlobalAlloc(GMEM_FIXED|GMEM_ZEROINIT,sizeof(MenuItem)*newSize)); } PopUpMenu::~PopUpMenu() { size(0); } //PopUpMenu &PopUpMenu::operator=(const PureMenu &somePureMenu) //{ // (PureMenu&)*this=somePureMenu; // return *this; //} PopUpMenu &PopUpMenu::operator=(const PureMenu &somePureMenu) { (PureMenu&)*this=(HMENU)somePureMenu; return *this; } WORD PopUpMenu::operator==(const PopUpMenu &somePopUpMenu)const { return (PureMenu&)*this==(PureMenu&)somePopUpMenu; } String PopUpMenu::menuLabel(void)const { return mMenuLabel; } void PopUpMenu::menuLabel(String menuLabel) { mMenuLabel=menuLabel; }