2015-09-07 80 views
0

我有一個(非商業)程序,它創建兩個窗口,一個顯示滾動文本,您鍵入要發出命令。另一個顯示響應這些命令的各種複雜圖形。圖形信息非常複雜,需要佔用整個大型顯示器。我通常將文本窗口放置在第二臺顯示器上,因此從未考慮過哪個窗口位於頂部。保持一個窗口始終在另一個編程的頂部

我現在想讓一個(非技術)的朋友使用我的程序,他希望它能在單個顯示器上工作。我想要做的是將(小)文本窗口放置在圖形窗口頂部的一個角落,但以某種方式安排文本窗口保留在圖形窗口的頂部,即使在選擇圖形窗口時也是如此。可以這樣做,如果是的話,怎麼樣?

+0

'SetWindowPos(hwndTarget,HWND_TOP,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE)'應該這樣做。 – enhzflep

+2

@enhzflep這不會阻止窗口在其他窗口後面。它現在剛剛達到頂峯。 –

+0

謝謝@DavidHeffernan--顯然是睡覺的時候。對我來說這是多麼愚蠢的疏忽。 – enhzflep

回答

3

讓您希望置頂的窗口歸其他窗口所有。擁有的窗戶始終位於其所有者之上。該documentation說:

擁有的窗口

重疊或彈出窗口可以通過另一個重疊或 彈出窗口所擁有。被擁有的地方對窗戶有幾個限制。

  • 一個擁有的窗口始終在z所有者的上方。
  • 系統在其擁有者被銷燬時自動銷燬擁有的窗口。
  • 擁有窗口在其所有者最小化時隱藏。

只有重疊或彈出窗口可以是所有者窗口;一個孩子 窗口不能成爲所有者窗口。當應用程序使用 WS_OVERLAPPED或WS_POPUP樣式創建窗口時,通過將所有者的窗口句柄指定爲CreateWindowEx的參數hwndParent 來創建擁有的 窗口。 hwndParent參數必須 標識重疊窗口或彈出窗口。如果hwndParent標識子窗口 ,則系統將所有權分配給子窗口的頂級父項 窗口。在創建擁有的窗口之後,應用程序不能將該窗口的所有權轉移到另一個窗口。

默認情況下,對話框和消息框是擁有的窗口。 應用程序在調用 創建對話框或消息框的函數時指定所有者窗口。

應用程序可以使用GetWindow函數和GW_OWNER標誌 來檢索窗口所有者的句柄。

因此,請指定CreateWindowExhWndParent參數的窗口的所有者。該文檔有點難以遵循。它說:

hWndParent [在,可選]

正在創建句柄窗口的父或所有者窗口。要創建一個子窗口或一個擁有的窗口,請提供一個有效的窗口句柄。此參數對於彈出窗口是可選的。

這是得到的是參數重載。對於彈出窗口,此參數指定所有者。而當你想創建一個無主窗口通過NULL。這就是這個參數對於彈出窗口是可選的。對於子窗口,您在此參數中傳遞窗口的父窗口。

現在,對於您的情況,您希望創建一個擁有的彈出式窗口,並在此參數中傳遞所有者。

2

您可以將圖形窗口設置爲所有者。對於子窗口,這與父項的參數是相同的CreateWindow參數。我可以建議你也提供一些使文本窗口或多或少透明的方法。

相關問題