U konstruktoru klase CFreeMenu nalazi se kod
Code:
CMenu *menu = m_Menu->GetSubMenu(i);
if(menu)
{
CRect rect = GetItemRect(m_Menu,i);
CPoint p;
if(flags == 1)
{
p.x = rect.left;
p.y = rect.bottom+1;
}
else
{
p.x = rect.right + 1;
p.y = rect.top;
}
p.Offset(beginP);
CFreeMenu *submenu = new CFreeMenu(menu,p,ParentWnd,BackGroundColor,EdgeLUColor,EdgeRDColor,TextColor,font,0,this);
SubMenu.Add(submenu);
}
else
SubMenu.Add(NULL);
Sa druge strane, u dokumentaciji metode
Code:
CMenu* CMenu::GetSubMenu(int nPos)
stoji
Citat:
The CMenu pointer returned should not be stored.
Izgleda da je tu problem - ne treba pamtiti pokazivač na podmeni, nego njegov hendler.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.