【问题标题】:Windows 10 tray menu behind taskbar任务栏后面的 Windows 10 托盘菜单
【发布时间】: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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    当我在 W10 中遇到与催化剂控制中心托盘菜单相同的问题时,这个解决了我的问题:

    • 解锁任务栏
    • 将其移动到桌面的任何其他一侧
    • 锁定和解锁任务栏
    • 将任务栏放回您的首选位置并将其锁定

    可能是客户端问题,与您的代码完全无关。

    来源:http://www.thewindowsclub.com/fix-windows-7-start-menu-hides-behind-the-taskbar

    【讨论】:

    • 我同意,我有点太简洁了。编辑纳入您的建议。
    【解决方案3】:

    我可以确认,这似乎是一个 Windows 错误,它在我的 Windows 10 实例上随机发生。在我使用不同的显示器设置将笔记本电脑从扩展坞对接或拔出后,从睡眠中唤醒窗户时似乎会发生这种情况。但很难说这是否是原因。

    如果发生这种情况,我会运行一个包含以下内容的批处理脚本:

    taskkill /F /IM explorer.exe
    # Wait a few seconds
    ping -n 3 127.0.0.1 > NUL 2>&1
    start explorer.exe
    

    这将重新启动 Windows 资源管理器,并且所有托盘菜单再次开始出现在任务栏前面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-20
      • 2020-05-10
      • 1970-01-01
      相关资源
      最近更新 更多