C++ 使自动隐藏的任务栏在窗口上可见最大化而不取消隐藏

C++ 使自动隐藏的任务栏在窗口上可见最大化而不取消隐藏,c++,visual-studio-2010,visual-studio,visual-c++,mfc,C++,Visual Studio 2010,Visual Studio,Visual C++,Mfc,我正在努力解决MFC功能包中的此错误: 问题是: 当应用程序最大化并且用户在任务栏上自动隐藏时,窗口将覆盖“隐藏”任务栏(该任务栏应仍然可见,但仅1像素高)。当隐藏的任务栏像这样呈凹形时,用户不能通过将鼠标移动到屏幕底部来取消隐藏 要进入任务栏,用户必须按windows键或Alt选项卡 我所尝试的: 测试窗口是否在窗口焦点上最大化,并在任务栏上调用ShowWindow/BringWindowToFront。这会使任务栏可见,但会自动打开任务栏,就像在任务栏上移动鼠标一样。我只想显示“隐藏”状态

我正在努力解决MFC功能包中的此错误:

问题是:

当应用程序最大化并且用户在任务栏上自动隐藏时,窗口将覆盖“隐藏”任务栏(该任务栏应仍然可见,但仅1像素高)。当隐藏的任务栏像这样呈凹形时,用户不能通过将鼠标移动到屏幕底部来取消隐藏

要进入任务栏,用户必须按windows键或Alt选项卡

我所尝试的:

  • 测试窗口是否在窗口焦点上最大化,并在任务栏上调用ShowWindow/BringWindowToFront。这会使任务栏可见,但会自动打开任务栏,就像在任务栏上移动鼠标一样。我只想显示“隐藏”状态的任务栏(1像素高)
  • 调整窗口大小以在屏幕底部保留一行像素-这在最大化窗口上不起作用
非常感谢

  • 不过,如果您处理
    WM\u GETMINMAXINFO
    ,最大化窗口的大小调整可能会起作用。“DefWindowProc”后的补丁
    ptMaxSize
    /
    ptMaxPosition
  • 您是否尝试过设置窗口位置(hTaskbar,*YourHwnd*,0,0,0,0,SWP|u NOMOVE | SWP|u NOSIZE)

  • Windows 7的恼人功能是在任务栏上全屏运行每个无标题窗口 ... Windows7实际上通过重置最上面的标志来实现这一点。所以我们需要把它放回去。 这也是任务栏属性不再具有“始终位于顶部”复选框的原因

    void CMainFrame::OnSysCommand(UINT nID, LPARAM lParam)
    {
      // TODO: Add your message handler code here and/or call default
      CWnd::OnSysCommand(nID, lParam);
    
      // Windows7 bug fix
      if (nID == SC_MAXIMIZE)
      {
        HWND hTaskbar = ::FindWindowW(L"Shell_TrayWnd", NULL);
        ::SetWindowPos(hTaskbar, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE );
      }
    }