63 lines
1.3 KiB
C++
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;
|
|
}
|
|
|