Aracılığıyla paylaş


CContainedWindowT Sınıfı

Bu sınıf, başka bir nesnenin içinde yer alan bir pencere uygular.

Önemli

Bu sınıf ve üyeleri Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.

Sözdizimi

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

Parametreler

TBase
Yeni sınıfınızın temel sınıfı. Varsayılan temel sınıfıdır CWindow.

TWinTraits
Pencerenizin stillerini tanımlayan bir nitelik sınıfı. Varsayılan değer: CControlWinTraits.

Not

CContainedWindow , bir uzmanlığıdır CContainedWindowT. Temel sınıfı veya özellikleri değiştirmek istiyorsanız doğrudan kullanın CContainedWindowT .

Üyeler

Ortak Oluşturucular

Veri Akışı Adı Açıklama
CContainedWindowT::CContainedWindowT Oluşturucu. Hangi ileti eşlemesinin kapsanan pencerenin iletilerini işleneceğini belirtmek için veri üyelerini başlatır.

Genel Yöntemler

Veri Akışı Adı Açıklama
CContainedWindowT::Create Bir pencere oluşturur.
CContainedWindowT::D efWindowProc Varsayılan ileti işlemeyi sağlar.
CContainedWindowT::GetCurrentMessage Geçerli iletiyi döndürür.
CContainedWindowT::RegisterWndSuperclass kapsanan pencerenin pencere sınıfını kaydeder.
CContainedWindowT::SubclassWindow Bir pencereyi alt sınıflar.
CContainedWindowT::SwitchMessageMap kapsanan pencerenin iletilerini işlemek için hangi ileti eşlemesinin kullanılacağını değiştirir.
CContainedWindowT::UnsubclassWindow Daha önce alt sınıflanmış bir pencereyi geri yükler.
CContainedWindowT::WindowProc (Statik) Kapsanan pencereye gönderilen iletileri işler.

Ortak Veri Üyeleri

Veri Akışı Adı Açıklama
CContainedWindowT::m_dwMsgMapID Hangi ileti eşlemesinin kapsanan pencerenin iletilerini işleyeceklerini tanımlar.
CContainedWindowT::m_lpszClassName Yeni bir pencere sınıfının temel alınacağı mevcut bir pencere sınıfının adını belirtir.
CContainedWindowT::m_pfnSuperWindowProc Pencere sınıfının özgün pencere yordamını gösterir.
CContainedWindowT::m_pObject İçeren nesneye işaret ediyor.

Açıklamalar

CContainedWindowT başka bir nesnenin içinde yer alan bir pencere uygular. CContainedWindowT'nin pencere yordamı, iletileri uygun işleyicilere yönlendirmek için içeren nesnede bir ileti eşlemesi kullanır. Nesne CContainedWindowT oluştururken, hangi ileti eşlemesi kullanılacağını belirtirsiniz.

CContainedWindowT mevcut bir pencere sınıfını üst sınıfa alarak yeni bir pencere oluşturmanıza olanak tanır. Create yöntemi önce var olan bir sınıfı temel alan ancak kullanan CContainedWindowT::WindowProcbir pencere sınıfı kaydeder. Create ardından bu yeni pencere sınıfını temel alan bir pencere oluşturur. her örneği CContainedWindowT farklı bir pencere sınıfını üst sınıfa alabilir.

CContainedWindowT ayrıca pencere alt sınıflamasını da destekler. SubclassWindow yöntemi nesneye CContainedWindowT var olan bir pencere ekler ve pencere yordamını olarak CContainedWindowT::WindowProcdeğiştirir. Her örneği CContainedWindowT farklı bir pencereyi alt sınıfa alabilir.

Not

Belirli CContainedWindowT bir nesne için veya SubclassWindowçağrısı yapınCreate. Aynı nesnede her iki yöntemi de çağırmamalısınız.

ATL Proje Sihirbazı'nda Temel alarak denetim ekle seçeneğini kullandığınızda, sihirbaz denetimi uygulayan sınıfa otomatik olarak bir CContainedWindowT veri üyesi ekler. Aşağıdaki örnek, kapsanan pencerenin nasıl bildirilmiş olduğunu gösterir:

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;
}
Bunun hakkında daha fazla bilgi için: Bkz:
Denetim oluşturma ATL Öğreticisi
ATL'de pencereleri kullanma ATL Pencere Sınıfları
ATL Proje Sihirbazı ATL Projesi Oluşturma
Windows Windows SDK'sında Windows ve sonraki konular

Devralma Hiyerarşisi

TBase

CContainedWindowT

Gereksinimler

Üst bilgi: atlwin.h

CContainedWindowT::CContainedWindowT

Oluşturucu, veri üyelerini başlatır.

CContainedWindowT(
    LPTSTR lpszClassName,
    CMessageMap* pObject,
    DWORD dwMsgMapID = 0);

CContainedWindowT(
    CMessageMap* pObject,
    DWORD dwMsgMapID = 0)
    CContainedWindowT();

Parametreler

lpszClassName
[in] kapsanan pencerenin temel alınacağı mevcut bir pencere sınıfının adı.

pObject
[in] İleti eşlemesini bildiren içeren nesnenin işaretçisi. Bu nesnenin sınıfı CMessageMap'ten türetilmelidir.

dwMsgMapID
[in] kapsanan pencerenin iletilerini işleyecek ileti eşlemesini tanımlar. 0 varsayılan değeri, BEGIN_MSG_MAP ile bildirilen varsayılan ileti eşlemesini belirtir. ALT_MSG_MAP(msgMapID) ile bildirilen alternatif bir ileti eşlemesi kullanmak için geçirinmsgMapID.

Açıklamalar

Oluştur aracılığıyla yeni bir pencere oluşturmak istiyorsanız, lpszClassName parametresi için var olan bir pencere sınıfının adını geçirmeniz gerekir. Bir örnek için bkz . CContainedWindow'a genel bakış.

Üç oluşturucu vardır:

  • Üç bağımsız değişken içeren oluşturucu genellikle çağrılandır.

  • İki bağımsız değişkeni olan oluşturucu, öğesinden TBase::GetWndClassNamesınıf adını kullanır.

  • Bağımsız değişkenleri daha sonra sağlamak istiyorsanız, bağımsız değişken içermeyen oluşturucu kullanılır. Daha sonra çağırdığınızda Createpencere sınıfı adını, ileti eşleme nesnesini ve ileti eşleme kimliğini sağlamanız gerekir.

Var olan bir pencereyi SubclassWindow aracılığıyla alt sınıfa eklerseniz, lpszClassName değeri kullanılmaz; bu nedenle, bu parametre için NULL geçirebilirsiniz.

CContainedWindowT::Create

Mevcut bir sınıfı temel alan ancak CContainedWindowT::WindowProc kullanan bir pencere sınıfını kaydetmek için RegisterWndSuperclass'ı çağırır.

HWND Create(
    HWND hWndParent,
    _U_RECT rect,
    LPCTSTR szWindowName = NULL,
    DWORD dwStyle = 0,
    DWORD dwExStyle = 0,
    _U_MENUorID MenuOrID = 0U,
    LPVOID lpCreateParam = NULL);

HWND Create(
    CMessageMap* pObject,
    DWORD dwMsgMapID,
    HWND hWndParent,
    _U_RECT rect,
    LPCTSTR szWindowName = NULL,
    DWORD dwStyle = 0,
    DWORD dwExStyle = 0,
    _U_MENUorID MenuOrID = 0U,
    LPVOID lpCreateParam = NULL);

HWND Create(
    LPCTSTR lpszClassName,
    CMessageMap* pObject,
    DWORD dwMsgMapID,
    HWND hWndParent,
    _U_RECT rect,
    LPCTSTR szWindowName = NULL,
    DWORD dwStyle = 0,
    DWORD dwExStyle = 0,
    _U_MENUorID MenuOrID = 0U,
    LPVOID lpCreateParam = NULL);

Parametreler

lpszClassName
[in] kapsanan pencerenin temel alınacağı mevcut bir pencere sınıfının adı.

pObject
[in] İleti eşlemesini bildiren içeren nesnenin işaretçisi. Bu nesnenin sınıfı CMessageMap'ten türetilmelidir.

dwMsgMapID
[in] kapsanan pencerenin iletilerini işleyecek ileti eşlemesini tanımlar. 0 varsayılan değeri, BEGIN_MSG_MAP ile bildirilen varsayılan ileti eşlemesini belirtir. ALT_MSG_MAP(msgMapID) ile bildirilen alternatif bir ileti eşlemesi kullanmak için geçirinmsgMapID.

hWndParent
[in] Üst veya sahip penceresinin tutamacı.

Rect
[in] Pencerenin konumunu belirten bir RECT yapısı. işaretçisi RECT veya başvuru ile geçirilebilir.

szWindowName
[in] Pencerenin adını belirtir. Varsayılan değer NULL'dir.

dwStyle
[in] Pencerenin stili. Varsayılan değer şudur: WS_CHILD | WS_VISIBLE. Olası değerlerin listesi için bkz . Windows SDK'sında CreateWindow .

dwExStyle
[in] Genişletilmiş pencere stili. Varsayılan değer 0'dır ve genişletilmiş stil yoktur. Olası değerlerin listesi için bkz . Windows SDK'sında CreateWindowEx .

MenuOrID
[in] Alt pencere için pencere tanımlayıcısı. En üst düzey pencere için pencere için bir menü tutamacı. Varsayılan değer 0U'dur.

lpCreateParam
[in] Pencere oluşturma verilerinin işaretçisi. Tam açıklama için CreateWindowEx'e son parametrenin açıklamasına bakın.

Dönüş Değeri

Başarılı olursa, yeni oluşturulan pencerenin tanıtıcısı; aksi takdirde NULL.

Açıklamalar

Var olan pencere sınıfı adı m_lpszClassName kaydedilir. Create ardından bu yeni sınıfı temel alan bir pencere oluşturur. Yeni oluşturulan pencere nesneye CContainedWindowT otomatik olarak eklenir.

Not

SubclassWindow'u zaten çağırdıysanız aramayınCreate.

Not

MenuOrID parametresinin değeri olarak 0 kullanılıyorsa, derleyici hatasından kaçınmak için 0U (varsayılan değer) olarak belirtilmelidir.

CContainedWindowT::D efWindowProc

İleti eşlemesi tarafından işlenmeyen iletileri işlemek için WindowProc tarafından çağrılır.

LRESULT DefWindowProc()
LRESULT DefWindowProc(
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);

Parametreler

uMsg
[in] Pencereye gönderilen ileti.

wParam
[in] İletiye özgü ek bilgiler.

lParam
[in] İletiye özgü ek bilgiler.

Dönüş Değeri

İleti işlemenin sonucu.

Açıklamalar

Varsayılan olarak, DefWindowProc ileti bilgilerini m_pfnSuperWindowProc'de belirtilen pencere yordamına göndermek için CallWindowProc Win32 işlevini çağırır.

CContainedWindowT::GetCurrentMessage

Geçerli iletiyi (m_pCurrentMsg ) döndürür.

const _ATL_MSG* GetCurrentMessage();

Dönüş Değeri

Yapıda MSG paketlenmiş geçerli ileti.

CContainedWindowT::m_dwMsgMapID

kapsanan pencere için kullanılmakta olan ileti eşlemesinin tanımlayıcısını tutar.

DWORD m_dwMsgMapID;

Açıklamalar

Bu ileti eşlemesi, içeren nesnede bildirilmelidir.

BEGIN_MSG_MAP ile bildirilen varsayılan ileti eşlemesi her zaman sıfırla tanımlanır. ALT_MSG_MAP(msgMapID) ile bildirilen alternatif bir ileti eşlemesi tarafından msgMapIDtanımlanır.

m_dwMsgMapIDilk olarak oluşturucu tarafından başlatılır ve SwitchMessageMap çağrılarak değiştirilebilir. Bir örnek için bkz . CContainedWindowT'a Genel Bakış.

CContainedWindowT::m_lpszClassName

Var olan bir pencere sınıfının adını belirtir.

LPTSTR m_lpszClassName;

Açıklamalar

Bir pencere oluşturduğunuzda, Create bu varolan sınıfı temel alan ancak CContainedWindowT::WindowProc kullanan yeni bir pencere sınıfı kaydeder.

m_lpszClassName oluşturucu tarafından başlatılır. Bir örnek için bkz . CContainedWindowT'a genel bakış.

CContainedWindowT::m_pfnSuperWindowProc

İçerilen pencere alt sınıflanmışsa, m_pfnSuperWindowProc pencere sınıfının özgün pencere yordamına işaret edin.

WNDPROC m_pfnSuperWindowProc;

Açıklamalar

kapsanan pencere üst sınıf ise, yani var olan bir sınıfı değiştiren bir pencere sınıfını temel alır ve m_pfnSuperWindowProc var olan pencere sınıfının pencere yordamına işaret eder.

DefWindowProc yöntemi, içinde kaydedilen m_pfnSuperWindowProcpencere yordamına ileti bilgilerini gönderir.

CContainedWindowT::m_pObject

Nesneyi içeren CContainedWindowT nesneyi gösterir.

CMessageMap* m_pObject;

Açıklamalar

Sınıfı CMessageMap'ten türetilmelidir bu kapsayıcı, içerilen pencere tarafından kullanılan ileti eşlemesini bildirir.

m_pObject oluşturucu tarafından başlatılır. Bir örnek için bkz . CContainedWindowT'a genel bakış.

CContainedWindowT::RegisterWndSuperclass

İçerilen pencerenin pencere sınıfını kaydetmek için Create tarafından çağrılır.

ATOM RegisterWndSuperClass();

Dönüş Değeri

Başarılı olursa, kaydedilen pencere sınıfını benzersiz olarak tanımlayan bir atom; aksi takdirde, sıfır.

Açıklamalar

Bu pencere sınıfı mevcut bir sınıfı temel alır ancak CContainedWindowT::WindowProc kullanır. Mevcut pencere sınıfının adı ve pencere yordamı sırasıyla m_lpszClassName ve m_pfnSuperWindowProc kaydedilir.

CContainedWindowT::SubclassWindow

hWnd tarafından tanımlanan pencereyi alt sınıflara ekler ve nesneye CContainedWindowT ekler.

BOOL SubclassWindow(HWND hWnd);

Parametreler

hWnd
[in] Alt sınıflandırılan pencerenin tutamacı.

Dönüş Değeri

Pencere başarıyla alt sınıflandırılırsa DOĞRU; aksi takdirde YANLIŞ.

Açıklamalar

Alt sınıflandırılmış pencere artık CContainedWindowT::WindowProc kullanıyor. Özgün pencere yordamı m_pfnSuperWindowProc kaydedilir.

Not

Oluştur'u zaten çağırdıysanız aramayınSubclassWindow.

CContainedWindowT::SwitchMessageMap

kapsanan pencerenin iletilerini işlemek için hangi ileti eşlemesinin kullanılacağını değiştirir.

void SwitchMessageMap(DWORD dwMsgMapID);

Parametreler

dwMsgMapID
[in] İleti eşleme tanımlayıcısı. BEGIN_MSG_MAP ile bildirilen varsayılan ileti eşlemesini kullanmak için sıfır geçirin. ALT_MSG_MAP(msgMapID) ile bildirilen alternatif bir ileti eşlemesi kullanmak için geçirinmsgMapID.

Açıklamalar

İleti eşlemesi, içeren nesnede tanımlanmalıdır.

başlangıçta oluşturucuda ileti eşleme tanımlayıcısını belirtirsiniz.

CContainedWindowT::UnsubclassWindow

Alt sınıflanmış pencereyi nesneden CContainedWindowT ayırır ve m_pfnSuperWindowProc kaydedilen özgün pencere yordamını geri yükler.

HWND UnsubclassWindow(BOOL bForce = FALSE);

Parametreler

bForce
[in] Bu CContainedWindowT nesnenin pencere yordamı şu anda etkin olmasa bile özgün pencere yordamının geri yüklenmesini zorlamak için TRUE olarak ayarlayın. bForce YANLIŞ olarak ayarlanırsa ve bu CContainedWindowT nesnenin pencere yordamı şu anda etkin değilse, özgün pencere yordamı geri yüklenmez.

Dönüş Değeri

Daha önce alt sınıflanmış pencerenin tutamacı. bForce YANLIŞ olarak ayarlanırsa ve bu CContainedWindowT nesnenin pencere yordamı şu anda etkin değilse NULL döndürür.

Açıklamalar

Bu yöntemi yalnızca, pencere yok edilmeden önce özgün pencere yordamını geri yüklemek istiyorsanız kullanın. Aksi takdirde, pencere yok edildiğinde WindowProc bunu otomatik olarak yapar.

CContainedWindowT::WindowProc

Bu statik yöntem pencere yordamını uygular.

static LRESULT CALLBACK WindowProc(
    HWND hWnd,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);

Parametreler

hWnd
[in] Pencerenin tutamacı.

uMsg
[in] Pencereye gönderilen ileti.

wParam
[in] İletiye özgü ek bilgiler.

lParam
[in] İletiye özgü ek bilgiler.

Dönüş Değeri

İleti işlemenin sonucu.

Açıklamalar

WindowProciletileri m_dwMsgMapID tarafından tanımlanan ileti eşlemesine yönlendirir. Gerekirse, WindowProc ek ileti işleme için DefWindowProc'ı çağırır.

Ayrıca bkz.

CWindow Sınıfı
CWindowImpl Sınıfı
CMessageMap Sınıfı
BEGIN_MSG_MAP
ALT_MSG_MAP(msgMapID)
Sınıfa Genel Bakış