共用方式為


視窗類別巨集

這些巨集會定義窗口類別公用程式。

名稱 描述
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 視窗類別一文

另請參閱

巨集