我有一个带系统托盘图标的应用程序。
当您右键单击托盘图标时,它会显示一个菜单,用户可以选择一个动作。
我发现如果我有一个全屏应用程序正在运行,然后使用alt + esc到达托盘图标。然后当我右键单击图标时,菜单将出现在(下面)Windows任务栏后面。
在某些情况下,菜单太低了,无法选择上下文菜单中的最低菜单项。
当不是全屏应用程序在前面时,菜单会正确地显示在任务栏顶部。我还在Windows 7上测试过,使用全屏应用程序效果很好。
我已经尝试过不同的全屏应用程序,如Internet Explorer、Notepad++,但是发生了同样的事情。
我还可以看到有很多其他应用程序,例如“Skype for business”和“Radeon Settings”,也会出现这种情况。
Skype商务版菜单在任务栏后面:
对于内置的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 );
}
谢谢你的帮助