共用方式為


CContainedWindowT 類別

這個類別會實作在另一個物件內所包含的視窗。

重要

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

template <
class TBase= CWindow,
class TWinTraits= CControlWinTraits 
>
class CContainedWindowT :
public TBase

參數

  • TBase
    您的新類別的基底類別。 預設基底類別是 CWindow

  • TWinTraits
    字元類別會定義自己的視窗的樣式。 預設值為 CControlWinTraits

注意事項注意事項

CContainedWindowCContainedWindowT的特製化。如果您想要變更基底類別或特性,請直接使用 CContainedWindowT

Members

9e286yks.collapse_all(zh-tw,VS.110).gif公用建構函式

名稱

描述

CContainedWindowT::CContainedWindowT

建構函式。 初始化資料成員指定訊息對應的處理所包含之視窗的訊息。

9e286yks.collapse_all(zh-tw,VS.110).gif公用方法

名稱

描述

CContainedWindowT::Create

建立視窗。

CContainedWindowT::DefWindowProc

提供預設的訊息處理。

CContainedWindowT::GetCurrentMessage

傳回目前的訊息。

CContainedWindowT::RegisterWndSuperclass

註冊所包含之視窗的視窗類別。

CContainedWindowT::SubclassWindow

子類別視窗。

CContainedWindowT::SwitchMessageMap

變更訊息對應來處理所包含之視窗的訊息。

CContainedWindowT::UnsubclassWindow

還原先前子視窗。

CContainedWindowT::WindowProc

(靜態) 處理傳送至包含的視窗。

9e286yks.collapse_all(zh-tw,VS.110).gif公用資料成員

名稱

描述

CContainedWindowT::m_dwMsgMapID

識別訊息對應的處理所包含之視窗的訊息。

CContainedWindowT::m_lpszClassName

指定新的視窗類別現有視窗類別的名稱。

CContainedWindowT::m_pfnSuperWindowProc

將視窗類別的原始視窗程序的點。

CContainedWindowT::m_pObject

要包含的物件。

備註

CContainedWindowT 實作在另一個物件內所包含的視窗。 CContainedWindowT 的視窗程序在 [即時訊息中包含的物件使用訊息對應至適當的處理常式。 當 CContainedWindowT 建構物件時,您會指定應該使用的訊息對應。

CContainedWindowT 可讓您透過 superclassing 現有視窗類別建立新視窗。 建立 方法的第一個註冊根據現有的類別,但是使用 CContainedWindowT::WindowProc的視窗類別。 建立 接著會根據此新的視窗類別的視窗。 CContainedWindowT 每個執行個體的 Superclass 可以中不同的視窗類別。

CContainedWindowT 也支援子類別化的視窗。 SubclassWindow 方法附加現有 Windows CContainedWindowT 物件並變更視窗程序加入至 CContainedWindowT::WindowProcCContainedWindowT 每個執行個體的子類別可以在中不同的視窗。

注意事項注意事項

對於任何特定的 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 中的視窗

ATL 視窗類別

ATL 專案精靈

建立 ATL 專案

視窗

視窗 和後續的主題。 Windows SDK

繼承階層架構

TBase

CContainedWindowT

需求

Header: atlwin.h

請參閱

參考

CWindow 類別

CWindowImpl 類別

CMessageMap 類別

BEGIN_MSG_MAP

ALT_MSG_MAP

其他資源

ATL 類別概觀