【问题标题】:WS_CLIPCHILDREN does not work when in fullscreenWS_CLIPCHILDREN 在全屏时不起作用
【发布时间】:2010-08-28 01:50:56
【问题描述】:

我创建了一个主窗口:

if (!fullscreen)
{
    wStyle = WS_OVERLAPPED | WS_BORDER | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_CLIPCHILDREN;
    wExStyle = WS_EX_TOPMOST;
}
else
{
    wStyle = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN;
    wExStyle = WS_EX_TOPMOST;
}

我还有一个创建运行时的子窗口:

wStyle = WS_VISIBLE | WS_POPUP | WS_CHILD;
wExStyle = WS_EX_TOPMOST;

当我不在全屏模式时,一切都很顺利。 (即子窗口很好地显示在父窗口之上。)

但是,当我处于全屏模式时,父窗口会覆盖在子窗口上,这会导致可怕的闪烁。

如何设置主窗口和子窗口的属性,以便在全屏模式下也能很好地显示子窗口?

提前感谢您的所有回答。

【问题讨论】:

标签: c++ winapi fullscreen


【解决方案1】:

WS_POPUP 不能与 WS_CHILD 一起使用。不是肯定的,但这就是原因。

【讨论】:

  • 有没有办法让窗口没有标题栏,没有状态栏,没有边框......并且不使用 WS_POPUP ?
  • @Xavier V.:大多数窗口没有标题栏、状态栏、边框等。如果需要,您需要询问它们。这与您想要一个子窗口还是一个弹出窗口是正交的。
【解决方案2】:

那些样式标志组合无效。子窗口不能是弹出窗口,也不能是最顶层。不知道可能会产生什么样的副作用,从来没有试图故意弄错。

坚持这一点可能是有教育意义的,但不是很实用。您是否考虑过使用类库来处理这些粘糊糊的东西?

【讨论】:

  • 感谢您的回答。你在考虑什么图书馆?
  • 其中有很多:Qt、MFC、wxWidgets、WTL 等等。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-26
  • 1970-01-01
  • 2016-10-31
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
相关资源
最近更新 更多