任务栏

时间:2016-07-11 11:07:14

标签: c++ windows-10 contextmenu desktop-application system-tray

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

对于内置的Windows 10应用程序,这可以更好地工作 系统托盘的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 );
}

谢谢你的帮助

3 个答案:

答案 0 :(得分:1)

这是一个Windows 10错误,我注意到许多应用程序。就像MS没有正确定义任务栏一样。差不多2年没有修复......可能在另一对夫妇。

答案 1 :(得分:0)

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

  • 解锁任务栏
  • 将其移至桌面的任何其他方面
  • 锁定并解锁任务栏
  • 将任务栏放回首选位置并将其锁定

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

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

答案 2 :(得分:0)

我可以确认,这似乎是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资源管理器,并且所有任务栏菜单再次开始出现在任务栏的前面。