Files
Work/statbar/POPUP.CPP
2024-08-07 09:16:27 -04:00

63 lines
1.3 KiB
C++

#include <statbar/popup.hpp>
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__
::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;
}