我有一个(非商业的)程序,它创建两个窗口,一个显示滚动文本,您可以在其中键入以发出命令。另一个则根据这些命令显示各种复杂的图形。图形信息非常详细,非常复杂,需要占用整个大型监视器。我通常把文本窗口放在第二个显示器上,所以从来没有考虑过哪个窗口是“顶部”的。
我现在想让一个(非技术的)朋友使用我的程序,他希望它能在一个显示器上工作。我想要做的是将(小的)文本窗口放在一个角落的图形窗口的顶部,但不知怎么地安排文本窗口保持在图形窗口的顶部,即使选择了图形窗口。这能做到吗?如果是的话,怎么做?
发布于 2015-09-07 15:07:48
让你希望在上面的窗口被另一个窗口所拥有。拥有的窗口总是在其所有者之上。文档说:
拥有操作系统 重叠或弹出窗口可以由另一个重叠或弹出窗口拥有.拥有设置了窗口上的几个约束。
只有重叠或弹出窗口可以是所有者窗口;子窗口不能是所有者窗口。应用程序在创建具有hwndParent或WS_POPUP样式的窗口时,通过将所有者的窗口句柄指定为CreateWindowEx的WS_OVERLAPPED参数来创建拥有的窗口。hwndParent参数必须标识重叠或弹出窗口.如果hwndParent标识子窗口,则系统将所有权分配给子窗口的顶层父窗口。在创建了一个拥有的窗口之后,应用程序无法将该窗口的所有权转移到另一个窗口。
默认情况下,对话框和消息框是属于自己的窗口。应用程序在调用创建对话框或消息框的函数时指定所有者窗口。
应用程序可以使用带有GetWindow标志的GW_OWNER函数来检索窗口所有者的句柄。
因此,使用hWndParent
参数指定CreateWindowEx
窗口的所有者。文档有点难以理解。上面写着:
hWndParent in,可选 正在创建的窗口的父窗口或所有者窗口的句柄。若要创建子窗口或所属窗口,请提供有效的窗口句柄。对于弹出窗口,此参数是可选的。
这样做的目的是使参数重载。对于弹出窗口,此参数指定所有者。当您希望创建一个未拥有的窗口时,请传递NULL
。这就是弹出式窗口可选参数的意思。对于子窗口,在此参数中传递窗口的父窗口。
现在,在您的例子中,您希望创建一个拥有的弹出窗口,因此在这个参数中传递所有者。
发布于 2015-09-07 15:07:46
您只需将图形窗口设置为所有者即可。这是与子窗口的父窗口相同的CreateWindow
参数。请允许我建议您也提供一些使文本窗口或多或少透明的方法。
https://stackoverflow.com/questions/32441645
复制相似问题