了解視窗特性
視窗特性類別提供簡單的方法來標準化用於建立 ATL 視窗對象的樣式。 CWindowImpl 和其他 ATL 視窗類別接受視窗特性做為範本參數,做為在類別層級提供預設視窗樣式的方式。
如果窗口實例的建立者未在呼叫 Create 中明確提供樣式,您可以使用特性類別來確保視窗仍以正確的樣式建立。 您甚至可以確保針對該視窗類別的所有實例設定特定樣式,同時允許個別實例設定其他樣式。
ATL 視窗特性範本
ATL 提供兩個視窗特性範本,可讓您在編譯時期使用其範本參數來設定預設樣式。
類別 | 描述 |
---|---|
CWinTraits | 當您想要提供預設視窗樣式時,只有在呼叫 Create 中未指定其他樣式時,才會使用此範本。 運行時間提供的樣式優先於編譯時期所設定的樣式。 |
CWinTraitsOR | 當您想要指定一律為視窗類別設定的樣式時,請使用這個類別。 運行時間提供的樣式會與使用位 OR 運算符在編譯時期設定的樣式結合。 |
除了這些範本之外,ATL 還提供一些範本預先 CWinTraits
定義的特製化,以供常用的視窗樣式組合使用。 如需完整詳細數據, 請參閱 CWinTraits 參考檔。
自訂視窗特性
在專門化 ATL 所提供的其中一個範本並不足以建立自己的特性類別的情況下,您只需要建立實作兩個靜態函式的類別: 和 GetWndStyleEx
: GetWndStyle
static DWORD GetWndStyle(DWORD dwStyle);
static DWORD GetWndExStyle(DWORD dwExStyle);
每個函式都會在運行時間傳遞一些樣式值,可用來產生新的樣式值。 如果您的視窗特性類別做為 ATL 視窗類別的範本自變數,傳遞至這些靜態函式的樣式值將會是傳遞為樣式自變數至 Create 的任何專案。