CContainedWindowT 類別
這個類別會實作在另一個物件內所包含的視窗。
重要
這個類別和其成員不能用於 Windows 執行階段執行的應用程式。
template <
class TBase= CWindow,
class TWinTraits= CControlWinTraits
>
class CContainedWindowT :
public TBase
參數
TBase
您的新類別的基底類別。 預設基底類別是 CWindow。TWinTraits
字元類別會定義自己的視窗的樣式。 預設值為 CControlWinTraits。
注意事項 |
---|
CContainedWindow 是 CContainedWindowT的特製化。如果您想要變更基底類別或特性,請直接使用 CContainedWindowT 。 |
Members
公用建構函式
名稱 |
描述 |
---|---|
建構函式。 初始化資料成員指定訊息對應的處理所包含之視窗的訊息。 |
公用方法
名稱 |
描述 |
---|---|
建立視窗。 |
|
提供預設的訊息處理。 |
|
傳回目前的訊息。 |
|
註冊所包含之視窗的視窗類別。 |
|
子類別視窗。 |
|
變更訊息對應來處理所包含之視窗的訊息。 |
|
還原先前子視窗。 |
|
(靜態) 處理傳送至包含的視窗。 |
公用資料成員
名稱 |
描述 |
---|---|
識別訊息對應的處理所包含之視窗的訊息。 |
|
指定新的視窗類別現有視窗類別的名稱。 |
|
將視窗類別的原始視窗程序的點。 |
|
要包含的物件。 |
備註
CContainedWindowT 實作在另一個物件內所包含的視窗。 CContainedWindowT 的視窗程序在 [即時訊息中包含的物件使用訊息對應至適當的處理常式。 當 CContainedWindowT 建構物件時,您會指定應該使用的訊息對應。
CContainedWindowT 可讓您透過 superclassing 現有視窗類別建立新視窗。 建立 方法的第一個註冊根據現有的類別,但是使用 CContainedWindowT::WindowProc的視窗類別。 建立 接著會根據此新的視窗類別的視窗。 CContainedWindowT 每個執行個體的 Superclass 可以中不同的視窗類別。
CContainedWindowT 也支援子類別化的視窗。 SubclassWindow 方法附加現有 Windows CContainedWindowT 物件並變更視窗程序加入至 CContainedWindowT::WindowProc。 CContainedWindowT 每個執行個體的子類別可以在中不同的視窗。
注意事項 |
---|
對於任何特定的 CContainedWindowT 物件,請呼叫 建立 或 SubclassWindow。您不應該叫用相同物件的兩個方法。 |
當您在 ATL 專案精靈使用 Add control based on 選項時,精靈會自動將名稱 CContainedWindowT 資料成員加入至實作控制項的類別。 下列範例顯示所包含的視窗如何宣告:
public:
// Declare a contained window data member
CContainedWindow m_ctlEdit;
// Initialize the contained window:
// 1. Pass "Edit" to specify that the contained
// window should be based on the standard
// Windows Edit box
// 2. Pass 'this' pointer to specify that CAtlEdit
// contains the message map to be used for the
// contained window's message processing
// 3. Pass the identifier of the message map. '1'
// identifies the alternate message map declared
// with ALT_MSG_MAP(1)
CAtlEdit()
: m_ctlEdit(_T("Edit"), this, 1)
{
m_bWindowOnly = TRUE;
}
// Declare the default message map, identified by '0'
BEGIN_MSG_MAP(CAtlEdit)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus)
CHAIN_MSG_MAP(CComControl<CAtlEdit>)
// Declare an alternate message map, identified by '1'
ALT_MSG_MAP(1)
MESSAGE_HANDLER(WM_CHAR, OnChar)
END_MSG_MAP()
// Define OnCreate handler
// When the containing window receives a WM_CREATE
// message, create the contained window by calling
// CContainedWindow::Create
LRESULT OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/,
BOOL& /*bHandled*/)
{
RECT rc;
GetWindowRect(&rc);
rc.right -= rc.left;
rc.bottom -= rc.top;
rc.top = rc.left = 0;
m_ctlEdit.Create(m_hWnd, rc, _T("hello"), WS_CHILD | WS_VISIBLE |
ES_MULTILINE | ES_AUTOVSCROLL);
return 0;
}
如需詳細資訊 |
請參閱 |
---|---|
建立控制項 |
|
使用 ATL 中的視窗 |
|
ATL 專案精靈 |
|
視窗 |
視窗 和後續的主題。 Windows SDK |
繼承階層架構
TBase
CContainedWindowT
需求
Header: atlwin.h