我有一个TOPMOST的窗口,我有另一个(myWindow)窗口,我想放在第一个窗口后面,我不想让第二个窗口成为最顶层的窗口:
SetWindowPos(topMostWin, HWND_TOPMOST, left, top, width, height, flags);
LONG_PTR exstyle = ::GetWindowLongPtr(myWindow, GWL_EXSTYLE);
if (exstyle & WS_EX_TOPMOST)
{
exstyle &= ~WS_EX_TOPMOST;
if( ! ::SetWindowLongPtr(myWindow, GWL_EXSTYLE, exstyle))
{
LOG_ERROR();
}
}
SetWindowPos(myWindow, topMostWin, left, top, width, height, flags);
但myWindow仍然表现得像最顶级的窗口,当我检查扩展样式的myWindow WS_EX_TOPMOST
属性时,它仍然打开。即使我将窗口放在最顶层的窗口之后,是否可以关闭最顶端的位?
答案 0 :(得分:2)
HWND_TOP会将您的窗口置于任何最顶层窗口后面的z顺序的顶部。
答案 1 :(得分:1)
由于引入了“最顶层”窗口,HWND_TOP现在带来了 窗口“尽可能高的Z顺序而不违反 规则,最顶层的窗口总是出现在非最顶层的窗口上方“。 这在实践中意味着什么?
- 如果窗口位于最顶层,则HWND_TOP将其置于Z顺序的最顶层。
- 如果一个窗口不是最顶层的,那么HWND_TOP将它放在所有非最顶层窗口的顶部(即,在最低的最顶层窗口的正下方, 如果有的话。。
注意:上面的讨论完全忽略了所有者和。的问题 拥有的窗户。我把它们排除了,因为它们会添加一层 分散主题的并发症。
*Raymond Chen - The Old New Thing*
还有什么可说的? ... 强>