:关于系统托盘弹出MENU后不能自动销毁有关问题,难

::::::::::::关于系统托盘弹出MENU后不能自动销毁问题,:::::难
在系统托盘区处调用TrackPopupMenu弹出一个菜单,但是弹出以后如果鼠标在其他区域点了以后该MENU不能自动消失,查看MSDN,解释说只能是SetForegroundWindow()+PostMessage(this-> m_hWnd,WM_NULL,0,0)结合才能自动消失,现在关键问题是我的程序不能使用这样的方法解决,原因是我的程序里有浮动的模态窗口,如果使用这样的方法,只要在系统托盘点了鼠标,还没有选择菜单,此时我的模态窗口已经SHOW出来了,使得程序的业务逻辑就错误了,

不知道如何解决菜单自动销毁问题,总之不能使用MSDN提供的这样的方法!


分数不够可以加,解决问题要紧,SOS!!!!!!

------解决方案--------------------
C/C++ code

BOOL  AfxShowPopupMenu(CWnd* pWnd, UINT nID)
{
 ASSERT(nID!=NULL && pWnd!=NULL);
 CMenu menu;
 CPoint pt;
 GetCursorPos(&pt);
 if(!menu.LoadMenu(nID))
 {
  TRACE0("Falied to load menu source.\n");
  return FALSE;
 }
 CMenu* pPopup = menu.GetSubMenu(0);
 ASSERT(pPopup != NULL);
 pWnd->SetForegroundWindow();
 return pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, pWnd);
}