共用方式為


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 傳遞 WndClassName DECLARE_WND_CLASS DECLARE_WND_CLASS_EX DECLARE_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 類別
類別概觀