任务栏后面的 Windows 10 托盘菜单

Ken*_*net 5 c++ desktop-application contextmenu system-tray windows-10

我在系统托盘中有一个带有图标的应用程序。
当您右键单击托盘图标时,它会显示一个菜单,用户可以在其中选择操作。
我发现如果我有一个全屏应用程序正在运行,然后使用 alt + esc 进入托盘图标。然后,当我右键单击该图标时,菜单将显示在 Windows 任务栏的后面(下方)。
在某些情况下,菜单太低以至于无法在上下文菜单中选择最低的菜单项。
当它不是前面的全屏应用程序时,菜单会正确显示在任务栏的顶部。我还在 Windows 7 上测试过,它在全屏应用程序中运行良好。
我尝试过不同的全屏应用程序,如 Internet Explorer、Notepad++,但同样的事情发生了。
我还可以看到还有很多其他应用程序,比如“Skype for business”和“Radeon Settings”,它们都在做同样的事情。
Skype for business 在任务栏后面有菜单:在此处输入图片说明

对于内置的 Windows 10 应用程序,这效果更好。
系统托盘的 Windows 时间和语言部分将使用新的 Windows 10 布局(黑色)在任务栏顶部显示菜单
Windows 声音和网络图标将隐藏任务栏,同时显示常规右键单击菜单,但保留开始菜单打开。(不过这看起来有点奇怪)

我已经尝试过 Windows SDK 中的 NotificationIcon 示例,但这也无法正常工作。

所以问题是什么是为 Windows 10 编程显示托盘上下文菜单的正确方法?
我的代码看起来像这样。

case WM_RBUTTONDOWN:
{
    SetForegroundWindow();
    CMenu menu;
    menu.LoadMenu(ID_TRAY_MENU_SHOW_APP);
    CMenu* pPopup = menu.GetSubMenu ( 0 ) ;
    GetCursorPos ( &pt ) ;
    pPopup->TrackPopupMenu ( TPM_LEFTALIGN | TPM_RIGHTBUTTON,pt.x, pt.y, this );
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助

小智 1

这是一个 Windows 10 错误,我在许多应用程序中都注意到了这一错误。就好像 MS 没有正确定义任务栏一样。已经快两年了没有修复...也许是在另一对夫妇中。