15,979
社区成员
发帖
与我相关
我的任务
分享
CXXX.h
CMenu *m_pRightMenu
CXXX.cpp
构造函数中:
m_pRigthMenu = NULL
析构函数中
if(m_pRightMenu != NULL)
{
m_pRightMenu->DestroyMenu();
delete m_pRightMenu;
m_pRightMenu = NULL;
}
/*
结构体stMenuItem的定义为:
#pragma pack(push, 1)
struct stMenuItem
{
int iMenuID ;
char szItem[30] ;
} ;
#pragma pack(pop)
*/
//设置菜单,可在初始化函数中调用
void CXXX::SetRightMenu()
{
stMenuItem MenuItemErrKbase[] =
{
{IDM_ADD_ERRKBASE, "添加记录"},
{IDM_UPDATE_ERRKBASE, "修改记录"},
{IDM_DELETE_ERRKBASE, "删除记录"},
{IDM_END, ""}
};
if(m_pRightMenu == NULL)
{
m_pRightMenu = new CMenu();
m_pRightMenu->CreatePopupMenu();
}
int iNum, i;
stMenuItem *pItem = MenuItemErrKbase;
iNum = m_pRightMenu->GetMenuItemCount();
for(i = iNum - 1; i >= 0; i--)
{
m_pRightMenu->RemoveMenu(i, MF_BYPOSITION);
}
while (pItem->iMenuID != IDM_END)
{
if(pItem->iMenuID > 0)
{
m_pRightMenu->InsertMenu(-1, MF_BYCOMMAND, pItem->iMenuID, pItem->szItem);
}
else
{
m_pRightMenu->InsertMenu(-1, MF_SEPARATOR);
}
pItem++;
}
}
CPoint ptCurr;
GetCursorPos(&ptCurr);
m_list.ScreenToClient(&ptCurr);
int nItemIndex = m_list.HitTest(ptCurr);