mfc右键菜单(包括系统托盘菜单)弹窗后如何消失
试了可用的解决方案是:
1,在弹出菜单前先设置窗口最前
2,弹出菜单后,发送一个WM_NULL消失
示例如下:
CMenu *pPopup = m_AppMenu.GetSubMenu(0); //获取第一个弹出菜单,所以第一个菜单必须有子菜单
CPoint point1;
//GetCursorPos(&point1);//获取当前光标的位置,以便使得菜单可以跟随光标
CRect rect; // 在悬浮窗左下沿弹菜单
::GetWindowRect(this->GetSafeHwnd(), &rect);
point1.x = rect.left;
point1.y = rect.bottom;
SetForegroundWindow(); //使托盘菜单一直处于前列窗口
pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point1.x, point1.y, this);//在指定位置显示弹出菜单
PostMessage(WM_NULL, 0, 0);//解决托盘菜单不消失