2016-01-24 78 views
-1

我有一个窗口,它是最上和最我有我希望把后面的第一个彼此(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属性它仍然是打开的。即使我将窗口放置在最上方的窗口之后,是否可以关闭最高位?

回答

2

HWND_TOP会把你的窗口背后的任何最顶层窗口的z顺序的顶部。

+0

请你能澄清它是如何回答这个问题? – Sanich

+1

@Sanich你不明白什么? –

+0

我不希望我的窗户在任何最顶层的窗户后面。我想这是一个特定的最顶层窗口后,但不包括自身是最顶层(WS_EX_TOPMOST财产关闭) – Sanich

1

最新引进的“层次最高的”窗口的结果,HWND_TOP现在带来 窗口“中的Z-为了尽可能高不违反 规则,最上面的窗口总是出现上述非最顶层窗口” 。 这是什么意思在实践中?

  • 如果一个窗口是最顶层的,那么HWND_TOP将它放在Z顺序的最顶端。
  • 如果窗口不是最上面,然后HWND_TOP把它在所有非最上面的窗口(即,刚好低于最低最上层的窗口, 如果有的话)的顶部。

注意:上述讨论完全忽略了所有者和拥有窗口的问题。我将它们排除在外,因为它们会添加一层分散于主题的并发症。

       *Raymond Chen - The Old New Thing* 

link to Raymond's blog site

什么可说的? ...