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::WindowProc
bir 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::WindowProc
değ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::GetWndClassName
sı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
Create
pencere 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 msgMapID
tanımlanır.
m_dwMsgMapID
ilk 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_pfnSuperWindowProc
pencere 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
WindowProc
iletileri 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ış