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)
谢谢你的帮助