2016-01-24 104 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

什麼可說的? ...