簡體   English   中英

頂級窗口,子窗口,對話(模態)窗口和非對話(無模式)窗口之間有什么區別?

[英]What are the differences among Top Level Window, Child window, Dialog(modal) window and non-dialog (modeless) windows?

任何人都可以告訴我如何區分它們嗎?

我很難理解頂級子窗口與對話/非對話窗口的區別因素是什么? 頂級窗口可以是對話/非對話窗口嗎? 子窗口可以是對話/非對話窗口嗎?

頂級表單由桌面擁有,而子表單屬於另一種形式; 這意味着關閉或最小化擁有表單也會影響子表單。

模態表單/對話框阻止調用線程,直到表單關閉,而無模式表單允許您在顯示時與應用程序中的其他表單進行交互。 任何形式都可以是模態/無模式的,無論它是頂級還是子形式 - 但是模態對話框的默認行為是由導致它們顯示的表單所擁有。

來自MSDN

語氣

在繼續使用應用程序的其余部分之前,必須關閉或隱藏模式窗體或對話框

無模式

無模式表單允許您在表單和另一個表單之間轉移焦點,而無需關閉初始表單。

頂級窗口可以是模態(對話框)或無模式。

頂級窗口由桌面擁有,因此它不能是父表單的子級。

父窗體擁有的子窗口不是頂級窗體,因為它具有父窗體。 但是它可以在Z順序中最前面,並且可以分別根據它的顯示方式進行模態或無模式,分別使用ShowDiaglog()Show()

頂級窗口:窗口不屬於任何其他窗口,因此它們管理自己的生命周期。 示例記事本窗口

子窗口:由其他窗口擁有的窗口。 這個其他窗口本身可以是頂級或子級。 示例編輯框或記事本的狀態欄,因此如果關閉記事本窗口編輯框,狀態欄等窗口將消失。

模態窗口:阻止當前線程執行直到它處於活動狀態的窗口。 如果它是子窗口,則將阻止與其父窗口的任何交互。 記事本的“示例字體”對話框,如果打開“字體”窗口,則無法在記事本窗口中鍵入任何內容。

無模式窗口:當活動線程處於活動狀態時不會阻止當前線程執行的窗口,因此如果它是子窗口,它允許您與其父窗口進行交互。 示例“記事本”的“查找”對話框,如果按Ctrl + F並打開“查找”窗口,則可以將其放在一邊並繼續在主記事本窗口中鍵入。

重要的是,窗口可以是Child或Top級別,但不能同時為兩個。

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM