15,979
社区成员
发帖
与我相关
我的任务
分享
void ShowSubMenu(FAVORITE fav, int n)
{
CSimpleArray<FAVORITE> favorites = _Module.m_FavoriteConfig.GetFavoritesByNode(fav.Node);
CPoint point(m_Controls[n].rect.left, m_Controls[n].rect.bottom);
ClientToScreen(&point);
int nMenuHeight = ::GetSystemMetrics(SM_CYMENU);
int nScreenHeight = GetSystemMetrics(SM_CYFULLSCREEN);
int nMaxCount = (nScreenHeight - point.y - 50) / nMenuHeight;
CMenuHandle menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_STRING, 4000 + m_MenuFavorites.GetSize(), _T("收藏到此文件夹下"));
menu.AppendMenu(MF_STRING, 5000 + m_MenuFavorites.GetSize(), _T("打开此文件夹下所有链接"));
menu.AppendMenu(MF_SEPARATOR);
m_MenuFavorites.Add(fav);
if (favorites.GetSize() >= 0)
{
for (int i = 0; i < favorites.GetSize(); i++)
{
DWORD dwExtraAttr = ((i + 4) % nMaxCount == 0) && _Module.m_Config.GetFavoriteMultiCol() ? MF_MENUBARBREAK : 0;
FAVORITE * pFav = &favorites[i];
CString title = pFav->Title.GetLength() > 30 ? pFav->Title.Left(30) + _T("...") : pFav->Title;
if (pFav->IsFolder)
{
m_MenuFavorites.Add(*pFav);
AddSubMenu(menu, dwExtraAttr, pFav, 2);
}
else
{
menu.AppendMenu(MF_STRING | dwExtraAttr, 1000 + m_MenuFavorites.GetSize(), title);
m_MenuFavorites.Add(*pFav);
}
}
MENUINFO menuInfo;
menuInfo.cbSize = sizeof(MENUINFO);
menuInfo.dwStyle = MNS_DRAGDROP;
menuInfo.fMask = MIM_STYLE;
menu.SetMenuInfo(&menuInfo);
UINT uCmd = menu.TrackPopupMenu(TPM_LEFTBUTTON | TPM_LEFTALIGN | TPM_RETURNCMD, point.x, point.y, m_hWnd);
menu.DestroyMenu();
}
}