C++ SetForegroundWindow()+;仅限消息窗口

C++ SetForegroundWindow()+;仅限消息窗口,c++,mfc,C++,Mfc,在只显示消息的窗口上使用SetForegroundWindow()并没有什么意义,但是我需要它来正确显示通知栏菜单(请参见MDSN TrackPopupMenu示例) m_hTrayMenu菜单项的消息处理程序调用对话框创建(使用空父窗口),该对话框使用此代码看起来非常丑陋: 注释掉setForeGroundIndow();对话框看起来应该是: 。。但托盘弹出菜单消失,然后停止工作 我认为这里的特定对话框并不重要,因为我尝试了各种窗口样式的组合,但是setForeGroundIndow()仍

在只显示消息的窗口上使用SetForegroundWindow()并没有什么意义,但是我需要它来正确显示通知栏菜单(请参见MDSN TrackPopupMenu示例)

m_hTrayMenu菜单项的消息处理程序调用对话框创建(使用空父窗口),该对话框使用此代码看起来非常丑陋:

注释掉setForeGroundIndow();对话框看起来应该是:

。。但托盘弹出菜单消失,然后停止工作

我认为这里的特定对话框并不重要,因为我尝试了各种窗口样式的组合,但是setForeGroundIndow()仍然会弄乱它


只有保留我的主窗口消息(如果这是问题所在)才能简单地解决这个问题吗?

您确定您的应用程序有正确的清单吗?你使用什么版本的VS?
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);
}