我正在尝试解决MFC功能包Windows 7 taskbar won't auto-unhide when wizard-built MFC app is maximized中的此错误。

问题:

当应用程序最大化并且用户在其任务栏上具有自动隐藏功能时,该窗口将覆盖“隐藏”任务栏(该任务栏应该仍然可见,但只有1像素高)。这样隐藏隐藏的任务栏时,用户无法通过将鼠标移至屏幕底部来取消隐藏它。

要进入任务栏,用户必须按Windows键或Alt-Tab键。

我尝试过的

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

  • 非常感谢。

    最佳答案

    Windows 7的令人讨厌的功能,可以在任务栏上全屏运行每个无字幕的窗口
    ...
    Windows 7实际上是通过重置TOPMOST标志来完成此操作的。因此,我们需要重新设置它。
    这也是任务栏属性不再具有“始终在顶部”复选框的原因。

    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 );
      }
    }
    

    关于c++ - 使自动隐藏的任务栏在窗口上可见,而无需取消隐藏即可最大化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11725827/

    10-13 08:16