SetForegroundWindow()+仅消息窗口

时间:2014-12-25 14:54:11

标签: c++ mfc

在仅消息窗口上使用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父窗口),使用此代码看起来非常难看:

enter image description here

评论 SetForegroundWindow(); ,对话框看起来应该如此:

enter image description here

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

我认为这里的具体对话并不重要,因为我尝试了各种窗口样式组合,但SetForegroundWindow()仍然与它混淆。

有没有办法简单地解决这个问题,只保留我的主窗口消息(如果这是问题)?

0 个答案:

没有答案