共用方式為


CWndClassInfo 類別

這個類別提供註冊視窗類別資訊的方法。

重要

這個類別及其成員不能用於在 Windows 執行階段 中執行的應用程式。

語法

class CWndClassInfo

成員

公用方法

名稱 描述
註冊 註冊窗口類別。

資料成員

名稱 描述
m_atom 唯一識別已註冊的窗口類別。
m_bSystemCursor 指定數據指標資源是參考系統數據指標還是模組資源中包含的數據指標。
m_lpszCursorID 指定數據指標資源的名稱。
m_lpszOrigName 包含現有視窗類別的名稱。
m_szAutoName 保存由 ATL 產生的視窗類別名稱。
m_wc 維護結構中的 WNDCLASSEX 視窗類別資訊。
pWndProc 指向現有視窗類別的視窗程式。

備註

CWndClassInfo 管理視窗類別的資訊。 您通常會透過三個巨集之一、DECLARE_WND_CLASS、DECLARE_WND_CLASS_EX或DECLARE_WND_SUPERCLASS使用 CWndClassInfo ,如下表所述:

Macro 描述
DECLARE_WND_CLASS CWndClassInfo 註冊新視窗類別的資訊。
DECLARE_WND_CLASS_EX CWndClassInfo 註冊新視窗類別的資訊,包括類別參數。
DECLARE_WND_SUPERCLASS CWndClassInfo 註冊以現有類別為基礎的視窗類別資訊,但使用不同的視窗程式。 這項技術稱為超類別化。

根據預設, CWindowImpl 會包含巨集, DECLARE_WND_CLASS 以根據新的視窗類別建立視窗。 DECLARE_WND_CLASS提供控制件的預設樣式和背景色彩。 如果您想要自行指定樣式和背景色彩,請從 CWindowImpl 衍生類別,並在類別定義中包含DECLARE_WND_CLASS_EX巨集。

如果您想要根據現有的視窗類別建立視窗,請從 CWindowImpl 衍生類別,並在類別定義中包含DECLARE_WND_SUPERCLASS巨集。 例如:

class ATL_NO_VTABLE CMyWindow :
   OtherInheritedClasses
   public CComControl<CMyWindow>
          // CComControl derives from CWindowImpl
{
public:
   // 1. The NULL parameter means ATL will generate a
   //    name for the superclass
   // 2. The "EDIT" parameter means the superclass is
   //    based on the standard Windows Edit box
   DECLARE_WND_SUPERCLASS(NULL, _T("EDIT"))

   // Remainder of class declaration omitted

如需窗口類別的詳細資訊,請參閱 Windows SDK 中的視窗類別

如需在 ATL 中使用視窗的詳細資訊,請參閱 ATL 視窗類別一文

需求

標頭: atlwin.h

CWndClassInfo::m_atom

包含已註冊窗口類別的唯一標識碼。

ATOM m_atom;

CWndClassInfo::m_bSystemCursor

如果為TRUE,則會在登錄窗口類別時載入系統數據指標資源。

BOOL m_bSystemCursor;

備註

否則,將會載入模組中包含的數據指標資源。

CWndClassInfom_bSystemCursor只有在指定 DECLARE_WND_CLASS (CWindowImpl 中的預設值) 或DECLARE_WND_CLASS_EX巨集時,才會使用 。 在此情況下, m_bSystemCursor 會初始化為TRUE。 如需詳細資訊,請參閱 CWndClassInfo 概觀。

CWndClassInfo::m_lpszCursorID

指定數據指標資源的名稱,或低序字中的資源識別元,並以高序字指定零。

LPCTSTR m_lpszCursorID;

備註

註冊窗口類別時,會擷取所識別m_lpszCursorID數據指標的句柄,並儲存m_wc

CWndClassInfom_lpszCursorID只有在指定 DECLARE_WND_CLASS (CWindowImpl 中的預設值) 或DECLARE_WND_CLASS_EX巨集時,才會使用 。 在此情況下, m_lpszCursorID 會初始化為 IDC_ARROW。 如需詳細資訊,請參閱 CWndClassInfo 概觀。

CWndClassInfo::m_lpszOrigName

包含現有視窗類別的名稱。

LPCTSTR m_lpszOrigName;

備註

CWndClassInfo只有在類別定義中包含 DECLARE_WND_SUPERCLASS 巨集時,才會使用 m_lpszOrigName 。 在此情況下, CWndClassInfo 會根據 所 m_lpszOrigName命名的類別註冊窗口類別。 如需詳細資訊,請參閱 CWndClassInfo 概觀。

CWndClassInfo::m_szAutoName

保存窗口類別的名稱。

TCHAR m_szAutoName[13];

備註

CWndClassInfo只有在參數將 NULL 傳遞WndClassNameDECLARE_WND_CLASSDECLARE_WND_CLASS_EXDECLARE_WND_SUPERCLASS時,才會使用 m_szAutoName 。 ATL 會在註冊視窗類別時建構名稱。

CWndClassInfo::m_wc

維護 WNDCLASSEX 結構中的視窗類別資訊。

WNDCLASSEX m_wc;

備註

如果您已指定 DECLARE_WND_CLASS (CWindowImpl 中的預設值)或DECLARE_WND_CLASS_EX巨集,m_wc則包含新視窗類別的相關信息。

如果您已指定 DECLARE_WND_SUPERCLASS 巨集, m_wc 則包含超級類別的相關信息, 這是以現有類別為基礎的窗口類別,但使用不同的視窗程式。 m_lpszOrigName和 pWndProc 分別儲存現有視窗類別的名稱和視窗程式。

CWndClassInfo::p WndProc

指向現有視窗類別的視窗程式。

WNDPROC pWndProc;

備註

CWndClassInfo只有在類別定義中包含 DECLARE_WND_SUPERCLASS 巨集時,才會使用 pWndProc 。 在此情況下, CWndClassInfo 註冊以現有類別為基礎的窗口類別,但使用不同的視窗程式。 現有的視窗類別視窗程式會儲存在 中 pWndProc。 如需詳細資訊,請參閱 CWndClassInfo 概觀。

CWndClassInfo::Register

CWindowImpl::Create 呼叫,以在尚未註冊時註冊窗口類別。

ATOM Register(WNDPROC* pProc);

參數

pProc
[out]指定現有視窗類別的原始視窗程式。

傳回值

如果成功,會唯一識別所註冊之窗口類別的 Atom。 否則為 0。

備註

如果您已指定DECLARE_WND_CLASS(CWindowImpl 中的預設值)或DECLARE_WND_CLASS_EX巨集,Register請註冊新的窗口類別。 在此情況下, 不會使用 pProc 參數。

如果您已指定 DECLARE_WND_SUPERCLASS 巨集, Register 請註冊超級類別 — 一個以現有類別為基礎的窗口類別,但使用不同的視窗程式。 現有的視窗類別視窗程式會在 pProc傳回。

另請參閱

CComControl 類別
類別概觀