【发布时间】:2016-11-13 07:24:16
【问题描述】:
我在系统托盘中有一个带有图标的应用程序。
当您右键单击托盘图标时,它会显示一个菜单,用户可以在其中选择一个操作。
我发现如果我有一个全屏应用程序正在运行,然后使用 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 );
}
感谢您的帮助
【问题讨论】:
-
我遇到了类似的问题。你知道如何解决这个问题了吗?谢谢。
-
不,我没有找到任何解决方案。我也在msdn论坛上写过。 social.msdn.microsoft.com/Forums/en-US/… 但我得到的回复并没有帮助。最后,我还在 MS 反馈中心提交了反馈。
-
@Kennet 嘿。您如何解决此问题的任何更新?
-
嘿。没有没有解决。
-
4 年前的错误,仍然没有修复。每次您使用 3D 加速(如游戏或特定建模软件)时都会发生这种情况,并且您启用了 150% 及以上的字体缩放。这是设计工作站以及连接到 4K 电视和显示器的 PC 的典型场景。最近,它变得非常烦人,因为更多的系统使用 3D、4K 和字体缩放。我不知道有什么办法可以修复这个栏,除了登录/注销,或者只是重新启动。
标签: c++ windows-10 contextmenu desktop-application system-tray