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;
備註
否則,將會載入模組中包含的數據指標資源。
CWndClassInfo
m_bSystemCursor
只有在指定 DECLARE_WND_CLASS (CWindowImpl 中的預設值) 或DECLARE_WND_CLASS_EX巨集時,才會使用 。 在此情況下, m_bSystemCursor
會初始化為TRUE。 如需詳細資訊,請參閱 CWndClassInfo 概觀。
CWndClassInfo::m_lpszCursorID
指定數據指標資源的名稱,或低序字中的資源識別元,並以高序字指定零。
LPCTSTR m_lpszCursorID;
備註
註冊窗口類別時,會擷取所識別m_lpszCursorID
數據指標的句柄,並儲存m_wc。
CWndClassInfo
m_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 中傳回。