共用方式為


使用自主視窗

ATL 使用 CContainedWindowT 實作自主視窗。 自主視窗代表將訊息委派給容器對象的視窗,而不是在自己的類別中處理訊息。

注意

您不需要從 CContainedWindowT 衍生類別,即可使用自主視窗。

透過包含的視窗,您可以將現有的 Windows 類別超類別或子類別化為現有的視窗。 若要建立將現有 Windows 類別超類別化的視窗,請先在 物件的建構函式 CContainedWindowT 中指定現有的類別名稱。 然後呼叫 CContainedWindowT::Create。 若要將現有的視窗子類別化,您不需要指定 Windows 類別名稱(將 NULL 傳遞至建構函式)。 只要使用 CContainedWindowT::SubclassWindow 子類別化視窗的句柄呼叫 方法即可。

您通常會使用自主視窗作為容器類別的數據成員。 容器不需要是視窗;不過,它必須衍生自 CMessageMap

自主視窗可以使用替代訊息對應來處理其訊息。 如果您有一個以上的自主視窗,您應該宣告數個替代訊息對應,每個對應至個別的自主視窗。

範例

以下是具有兩個自主視窗的容器類別範例:

class CMyContainer : public CMessageMap
{
public:
   CContainedWindow m_wndEdit;
   CContainedWindow m_wndList;

   CMyContainer() : m_wndEdit(_T("Edit"), this, 1), 
                    m_wndList(_T("List"), this, 2)
   {
   }

   BEGIN_MSG_MAP(CMyContainer)
   ALT_MSG_MAP(1)
      // handlers for the Edit window go here
   ALT_MSG_MAP(2)
      // handlers for the List window go here
   END_MSG_MAP()

};

如需自主視窗的詳細資訊,請參閱 SUBEDIT 範例。

另請參閱

窗口類別