【问题标题】:Maximized WS_POPUP window goes in front of the taskbar最大化的 WS_POPUP 窗口位于任务栏的前面
【发布时间】:2018-03-12 19:38:23
【问题描述】:

我正在使用该代码在 C++ 中创建一个窗口:

HWnd = CreateWindow(wc.lpszClassName,
    "myapp",
    WS_POPUP |WS_VISIBLE,
    10, 10, 1000, 800, 0, 0, hInst, NULL);

它看起来像我想要的,但是当我像这样最大化它时:

ShowWindow(hwnd, SW_SHOWMAXIMIZED);

然后它就像一个全屏窗口,以便隐藏任务栏。 我认为这是因为它是一个 POPUP 窗口,但这就像我希望它出现一样。

我需要创建自己的最大化函数还是有一个参数可以避免这种情况?

谢谢

【问题讨论】:

  • 允许弹出窗口最大化是不合适的。考虑使用 GetSystemMenu + EnableMenuItem 阻止用户最大化它。或处理 WM_GETMINMAXINFO 以限制监视器工作区域的范围。

标签: c++ window gdi createwindow


【解决方案1】:

您可以添加WS_CAPTION | WS_SYSMENU | WS_MAXIMIZEBOX 样式。

如果您希望窗口没有标题,则需要手动调整窗口大小以适应桌面工作区,您可以使用SystemParametersInfo 指定SPI_GETWORKAREA 标志进行查询。

【讨论】:

  • 是的,我不想要字幕,使用 SystemParametersInfo 很简单,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-10
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多