視窗類別巨集
這些宏會定義視窗類別公用程式。
名稱 | 描述 |
---|---|
DECLARE_WND_CLASS | 可讓您指定新視窗類別的名稱。 |
DECLARE_WND_CLASS2 | (Visual Studio 2017)可讓您指定新視窗類別的名稱,以及新類別將使用其視窗程式的封入類別。 |
DECLARE_WND_SUPERCLASS | 可讓您指定新視窗類別所依據之現有視窗類別的名稱。 |
DECLARE_WND_CLASS_EX | 可讓您指定類別的參數。 |
需求
標頭: atlwin.h
DECLARE_WND_CLASS
可讓您指定新視窗類別的名稱。 將此宏放在 ATL ActiveX 控制項的控制項類別中。
DECLARE_WND_CLASS( WndClassName )
參數
WndClassName
[in]新視窗類別的名稱。 如果為 Null,ATL 會產生視窗類別名稱。
備註
如果您使用 /permissive- 編譯器選項,則DECLARE_WND_CLASS會導致編譯器錯誤;請改用 DECLARE_WND_CLASS2。
DECLARE_WND_CLASS可讓您指定新視窗類別的名稱,其資訊將由 CWndClassInfo 管理 。 DECLARE_WND_CLASS藉由實作下列靜態函式來定義新的視窗類別:
static CWndClassInfo& GetWndClassInfo();
DECLARE_WND_CLASS指定新視窗的下列樣式:
CS_HREDRAW
CS_VREDRAW
CS_DBLCLKS
DECLARE_WND_CLASS也會指定預設視窗的背景色彩。 使用 DECLARE_WND_CLASS_EX 宏來提供您自己的樣式和背景色彩。
CWindowImpl 會使用 DECLARE_WND_CLASS 宏,根據新的視窗類別建立視窗。 若要覆寫此行為,請使用 DECLARE_WND_SUPERCLASS 宏,或提供您自己的 GetWndClassInfo 函式實作 。
如需在 ATL 中使用視窗的詳細資訊,請參閱 ATL 視窗類別 一文 。
DECLARE_WND_CLASS2
(Visual Studio 2017)類似于DECLARE_WND_CLASS,但具有額外的參數,可在使用 /permissive- 選項進行編譯時避免相依名稱錯誤。
DECLARE_WND_CLASS2( WndClassName, EnclosingClass )
參數
WndClassName
[in]新視窗類別的名稱。 如果為 Null,ATL 會產生視窗類別名稱。
EnclosingClass
[in]將新視窗類別括住的視窗類別名稱。 不可以是 NULL。
備註
如果您使用 /permissive- 選項,則DECLARE_WND_CLASS會導致編譯錯誤,因為它包含相依名稱。 DECLARE_WND_CLASS2要求您明確命名這個宏所使用的類別,而且不會在 /permissive- 旗標下造成錯誤。 否則,這個宏與 DECLARE_WND_CLASS 相同。
DECLARE_WND_SUPERCLASS
可讓您指定類別的參數。 將此宏放在 ATL ActiveX 控制項的控制項類別中。
DECLARE_WND_SUPERCLASS( WndClassName, OrigWndClassName )
參數
WndClassName
[in]將超類別 OrigWndClassName 的視窗類別名稱。 如果為 Null,ATL 會產生視窗類別名稱。
OrigWndClassName
[in]現有視窗類別的名稱。
備註
這個宏可讓您指定將超級類別化現有視窗類別的視窗類別名稱。 CWndClassInfo 會管理超類別的資訊。
DECLARE_WND_SUPERCLASS實作下列靜態函式:
static CWndClassInfo& GetWndClassInfo();
根據預設, CWindowImpl 會使用 DECLARE_WND_CLASS 宏,根據新的視窗類別建立視窗。 藉由在衍生類別中 CWindowImpl
指定DECLARE_WND_SUPERCLASS宏,視窗類別會以現有的類別為基礎,但會使用您的視窗程式。 這項技術稱為超類別化。
除了使用DECLARE_WND_CLASS和DECLARE_WND_SUPERCLASS宏之外,您還可以使用自己的實作覆寫 GetWndClassInfo 函式。
如需在 ATL 中使用視窗的詳細資訊,請參閱 ATL 視窗類別 一文 。
DECLARE_WND_CLASS_EX
可讓您指定新視窗類別所依據之現有視窗類別的名稱。 將此宏放在 ATL ActiveX 控制項的控制項類別中。
DECLARE_WND_CLASS_EX( WndClassName, style, bkgnd )
參數
WndClassName
[in]新視窗類別的名稱。 如果為 Null,ATL 會產生視窗類別名稱。
style
[in]視窗的樣式。
bkgnd
[in]視窗的背景色彩。
備註
這個宏可讓您指定新視窗類別的類別參數,其資訊將由 CWndClassInfo 管理 。 DECLARE_WND_CLASS_EX藉由實作下列靜態函式來定義新的視窗類別:
static CWndClassInfo& GetWndClassInfo();
如果您想要使用預設樣式和背景色彩,請使用 DECLARE_WND_CLASS 宏。 如需在 ATL 中使用視窗的詳細資訊,請參閱 ATL 視窗類別 一文 。
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應