我正在尝试一些新的MFC功能,我希望Visual Studio 2010的Visual C ++语言示例中的TrayMenu项目能够在我的机器中完成(不知道是否只在我的机器中我尝试在网上找到同样的问题,但没有找到任何类似的报告!!!)菜单出现在新的win7 traynotifywwnd的背景中,我似乎无法正常工作:
代码很简单:
void CTrayMenuDlg::OnTrayContextMenu ()
{
CPoint point;
::GetCursorPos (&point);
CMenu menu;
menu.LoadMenu (IDR_MENU1);
CMFCPopupMenu::SetForceShadow (TRUE);
HMENU hMenu = menu.GetSubMenu (0)->Detach ();
CMFCPopupMenu* pMenu = theApp.GetContextMenuManager()->ShowPopupMenu(hMenu, point.x, point.y, this, TRUE);
pMenu->SetForegroundWindow ();
}
我认为SetForegroundWindow是如何解决这个问题,但它不起作用,它仍然显示bewind窗口,当我们点击小箭头时隐藏和显示所有托盘图标(请注意,如果图标显示在ToolbarWindow32中 - 不隐藏 - 我们调用托盘上下文菜单然后一切正常,只有隐藏图标并使用ToolbarWindow32中的小箭头显示并且显示带有隐藏图标的窗口时才会出现此问题 - 这个窗口是否位于我的上下文菜单前面......)
有没有人发现这个问题?这个问题有什么解决方案吗?
由于
答案 0 :(得分:0)
我不确定这个,但您可以尝试添加:
// Set window position to topmost window.
pMenu->SetWindowPos(
&CWnd::wndTopMost,
0, 0, 0, 0,
SWP_NOMOVE | SWP_NOREDRAW | SWP_NOSIZE );
而不是pMenu-> SetForegroundWindow();
答案 1 :(得分:0)
来自MSDN:
添加
::SetWindowPos(pMenu->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE | SWP_NOMOVE);
在pMenu->SetForegroundWindow ();
之前 在CTrayMenuDlg::OnTrayContextMenu ()
函数中。
对我来说这很有用!