发布
社区首页 >问答首页 >以编程方式将一个窗口始终放在另一个窗口的顶部。

以编程方式将一个窗口始终放在另一个窗口的顶部。
EN

Stack Overflow用户
提问于 2015-09-07 15:04:53
回答 2查看 2K关注 0票数 0

我有一个(非商业的)程序,它创建两个窗口,一个显示滚动文本,您可以在其中键入以发出命令。另一个则根据这些命令显示各种复杂的图形。图形信息非常详细,非常复杂,需要占用整个大型监视器。我通常把文本窗口放在第二个显示器上,所以从来没有考虑过哪个窗口是“顶部”的。

我现在想让一个(非技术的)朋友使用我的程序,他希望它能在一个显示器上工作。我想要做的是将(小的)文本窗口放在一个角落的图形窗口的顶部,但不知怎么地安排文本窗口保持在图形窗口的顶部,即使选择了图形窗口。这能做到吗?如果是的话,怎么做?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-07 15:07:48

让你希望在上面的窗口被另一个窗口所拥有。拥有的窗口总是在其所有者之上。文档说:

拥有操作系统 重叠或弹出窗口可以由另一个重叠或弹出窗口拥有.拥有设置了窗口上的几个约束。

  • 按z顺序,拥有的窗口总是在其所有者之上.
  • 系统在其所有者被销毁时会自动销毁其拥有的窗口。
  • 当所有者最小化时,拥有的窗口被隐藏。

只有重叠或弹出窗口可以是所有者窗口;子窗口不能是所有者窗口。应用程序在创建具有hwndParent或WS_POPUP样式的窗口时,通过将所有者的窗口句柄指定为CreateWindowEx的WS_OVERLAPPED参数来创建拥有的窗口。hwndParent参数必须标识重叠或弹出窗口.如果hwndParent标识子窗口,则系统将所有权分配给子窗口的顶层父窗口。在创建了一个拥有的窗口之后,应用程序无法将该窗口的所有权转移到另一个窗口。

默认情况下,对话框和消息框是属于自己的窗口。应用程序在调用创建对话框或消息框的函数时指定所有者窗口。

应用程序可以使用带有GetWindow标志的GW_OWNER函数来检索窗口所有者的句柄。

因此,使用hWndParent参数指定CreateWindowEx窗口的所有者。文档有点难以理解。上面写着:

hWndParent in,可选 正在创建的窗口的父窗口或所有者窗口的句柄。若要创建子窗口或所属窗口,请提供有效的窗口句柄。对于弹出窗口,此参数是可选的。

这样做的目的是使参数重载。对于弹出窗口,此参数指定所有者。当您希望创建一个未拥有的窗口时,请传递NULL。这就是弹出式窗口可选参数的意思。对于子窗口,在此参数中传递窗口的父窗口。

现在,在您的例子中,您希望创建一个拥有的弹出窗口,因此在这个参数中传递所有者。

票数 3
EN

Stack Overflow用户

发布于 2015-09-07 15:07:46

您只需将图形窗口设置为所有者即可。这是与子窗口的父窗口相同的CreateWindow参数。请允许我建议您也提供一些使文本窗口或多或少透明的方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32441645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档