tft每日頭條

 > 生活

 > level最安全的層級

level最安全的層級

生活 更新时间:2024-09-02 19:21:35
有這麼一個簡單的問題

搞了這麼久的Windows開發,我依然會頻繁地對這個問題比較茫然:什麼是一個頂級(top-level)窗口?那,今天就來叨叨一下。

一個top-level窗口是一個不是子窗口的窗口(繞口令來了)。說白了,就是說,這個窗口不帶有WM_CHILD屬性。

更多解析

> top-level窗口和子窗口不同,一個top-level窗口可以被顯示在屏幕的任何位置,而子窗口一般隻能顯示在它的父窗口的客戶區。

> 有很多文檔裡定義top-level窗口為:一個沒有父窗口的窗口。這個說法可能到導緻某種誤解:很多人認為使用CreateWindow(Ex)并傳遞一個有效的父窗口句柄可以創建一個”有父窗口”的窗口。如果根據這個定義,則這個窗口就不是一個top-level窗口。

> 一個top-level窗口可以被或者不被擁有,但是它永遠也不可能是一個子窗口。我們可以說一個窗口有一個擁有者,但是它沒有一個父窗口。

> top-level窗口可以是一個重疊(Overlapped)窗口(帶有WS_OVERLAPPED屬性,通常作為應用程序主窗口), 也可以是一個彈出式窗口(帶有WM_POPUP屬性,通常用于各類彈出消息框)。

> 一些涉及窗口操作的API如CreateWindow(Ex), MoveWindow, SetWindowPos,總是使用屏幕坐标系(左邊原點位于屏幕左上角)。

倆例子兒

下面創建了一個top-level窗口,因為它沒有設置WM_CHILD屬性。同時,它沒有設置父窗口,所以它沒有被擁有。

level最安全的層級(什麼是一個頂級)1

下面也是創建了一個top-level窗口,因為它沒有設置WM_CHILD屬性。同時,它設置了父窗口,所以它被這個父窗口所擁有。

level最安全的層級(什麼是一個頂級)2

總結

經過這麼一番咀嚼,應該是搞明白什麼是一個top-level窗口了吧?今日份叨叨完畢。

最後

本文來自”代碼大拿”(CodeGuru):《Windows SDK: What is a top-level window?》

level最安全的層級(什麼是一個頂級)3

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved