在仅消息窗口上使用SetForegroundWindow()并不完全有意义,但我需要它来显示正确消失的通知托盘菜单(参见MDSN TrackPopupMenu示例)。
void CMyWnd::DisplayTrayMenu()
{
CPoint pt;
GetCursorPos(&pt);
SetForegroundWindow(); // problematic line
TrackPopupMenu(GetSubMenu(m_hTrayMenu, 0), TPM_RIGHTALIGN | TPM_BOTTOMALIGN | TPM_LEFTBUTTON, pt.x, pt.y, 0, GetSafeHwnd(), NULL);
PostMessage(WM_NULL, 0, 0);
}
m_hTrayMenu菜单项的消息处理程序调用对话框创建(使用NULL父窗口),使用此代码看起来非常难看:
评论 SetForegroundWindow(); ,对话框看起来应该如此:
..但托盘弹出菜单消失,然后停止工作。
我认为这里的具体对话并不重要,因为我尝试了各种窗口样式组合,但SetForegroundWindow()仍然与它混淆。
有没有办法简单地解决这个问题,只保留我的主窗口消息(如果这是问题)?