windows - 如何创建一个无标题边框的窗口?当窗口最大化时它不应该覆盖任务栏

标签 windows winapi

我想使用 win32 创建一个没有标题栏的窗口。边框应调整窗口大小。但是当我最大化窗口时,它也覆盖了任务栏,我不想覆盖任务栏。我怎样才能做到这一点?

谢谢。

最佳答案

认为如果窗口处于最大化状态,它不会覆盖标准任务栏 - 但是,您可以在不最大化窗口的情况下强制其全屏显示。演示:

// Force window to cover the taskbar...
case WM_SIZE:
  if( wParam == SIZE_MAXIMIZED )
  {
    ShowWindow( hWnd, SW_RESTORE ); // not MAXIMIZED any more

    // show on top at 1920x1080 size
    SetWindowPos( hWnd, HWND_TOPMOST,0,0,1920,1080,SWP_SHOWWINDOW );
  }
  break;

请注意,这确实存在与 TOPMOST 窗口相关的所有问题!

或者…… 如果您有一个没有菜单栏的窗口,它在最大化时覆盖了任务栏,并且您希望任务栏仍然可见,然后将窗口的大小调整为屏幕工作区:

HMONITOR hmon= MonitorFromWindow(hDlg, MONITOR_DEFAULTTONEAREST );
MONITORINFO moninfo;
moninfo.cbSize= sizeof(moninfo);
GetMonitorInfo(hmon, &moninfo);

SetWindowPos(hWnd,0, moninfo.rcWork.left, moninfo.rcWork.top,
                     moninfo.rcWork.right,moninfo.rcWork.bottom, SWP_NOZORDER );

注意:您不想将这样的窗口设置为最大化,只需使用上面的方法将其调整为全屏减去任务栏(如果窗口没有标题栏/系统菜单则用户无法移动,所以它就像被最大化一样工作)。

关于windows - 如何创建一个无标题边框的窗口?当窗口最大化时它不应该覆盖任务栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21749708/

相关文章:

c# - 适用于 Windows 的 Webview 应用程序

windows - 有没有办法做一个异步FindNextFile?

检查 API 是否受到监控( Hook ?)

c - 在事件查看器的情况下无法捕获 future 事件

WPF如何在最大化窗口时免除任务栏

windows - 哪些版本的 Windows 支持 FILE_ATTRIBUTE_TEMPORARY?

windows - 如何编译 ffmpeg 以在 Windows 上使用 Qt?

c# - 如何在不更改主机文件的情况下阻止对特定站点的访问,直到重新启动?

c++ - WINAPI C++ VS 2008 与 VS 2010

c# - 通过处理 NC_HITTEST 在移动控件时设置 SizeAll 光标