Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Pencere oluşturma veya alt sınıflama yöntemleri sağlar.
Önemli
Bu sınıf ve üyeleri Windows Çalışma Zamanı yürütülen uygulamalarda kullanılamaz.
Sözdizimi
template <class T, class TBase = CWindow, class TWinTraits = CControlWinTraits>
class ATL_NO_VTABLE CWindowImpl : public CWindowImplBaseT<TBase, TWinTraits>
Parametreler
T
öğesinden CWindowImpltüretilen yeni sınıfınız.
TBase
Sınıfınızın temel sınıfı. Varsayılan olarak, temel sınıf CWindow'dır.
TWinTraits
Pencerenizin stillerini tanımlayan bir nitelik sınıfı. Varsayılan değer: CControlWinTraits.
Üyeler
Genel Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| CWindowImpl::Create | Bir pencere oluşturur. |
CWindowImplBaseT Yöntemleri
| Veri Akışı Adı | Açıklama |
|---|---|
| DefWindowProc | Varsayılan ileti işlemeyi sağlar. |
| GetCurrentMessage | Geçerli iletiyi döndürür. |
| GetWindowProc | Geçerli pencere yordamını döndürür. |
| OnFinalMessage | Son ileti alındıktan sonra çağrılır (genellikle WM_NCDESTROY). |
| Alt SınıfWindow | Bir pencereyi alt sınıflar. |
| UnsubclassWindow | Daha önce alt sınıflanmış bir pencereyi geri yükler. |
Statik Yöntemler
| Veri Akışı Adı | Açıklama |
|---|---|
| GetWndClassInfo | Pencere sınıfı bilgilerini yöneten CWndClassInfo'nun statik bir örneğini döndürür. |
| WindowProc | Pencereye gönderilen iletileri işler. |
Veri Üyeleri
| Veri Akışı Adı | Açıklama |
|---|---|
| m_pfnSuperWindowProc | Pencere sınıfının özgün pencere yordamını gösterir. |
Açıklamalar
Var olan bir pencereyi pencere veya alt sınıf oluşturmak için kullanabilirsiniz CWindowImpl . pencere yordamı, CWindowImpl iletileri uygun işleyicilere yönlendirmek için bir ileti eşlemesi kullanır.
CWindowImpl::Create, CWndClassInfo tarafından yönetilen pencere sınıfı bilgilerini temel alan bir pencere oluşturur. CWindowImplDECLARE_WND_CLASS makroyu içerir; yani CWndClassInfo yeni bir pencere sınıfı kaydeder. Varolan bir pencere sınıfını üst sınıfa almak istiyorsanız, sınıfınızı öğesinden CWindowImpl türetin ve DECLARE_WND_SUPERCLASS makroyu ekleyin. Bu durumda, CWndClassInfo var olan bir sınıfı temel alan ancak kullanan CWindowImpl::WindowProcbir pencere sınıfı kaydeder. Örneğin:
class ATL_NO_VTABLE CMyWindow :
OtherInheritedClasses
public CComControl<CMyWindow>
// CComControl derives from CWindowImpl
{
public:
// 1. The NULL parameter means ATL will generate a
// name for the superclass
// 2. The "EDIT" parameter means the superclass is
// based on the standard Windows Edit box
DECLARE_WND_SUPERCLASS(NULL, _T("EDIT"))
// Remainder of class declaration omitted
Not
CWndClassInfo Yalnızca bir pencere sınıfı için bilgileri yönettiğinden, örneği CWindowImpl aracılığıyla oluşturulan her pencere aynı pencere sınıfını temel alır.
CWindowImpl ayrıca pencere alt sınıflamasını da destekler. SubclassWindow yöntemi nesneye CWindowImpl var olan bir pencere ekler ve pencere yordamını olarak CWindowImpl::WindowProcdeğiştirir. Her örneği CWindowImpl farklı bir pencereyi alt sınıfa alabilir.
Not
Belirli CWindowImpl bir nesne için veya SubclassWindowçağrısı yapınCreate. Aynı nesnede her iki yöntemi de çağırmayın.
ATL'ye CWindowImplek olarak, başka bir nesnede bulunan bir pencere oluşturmak için CContainedWindow sağlar.
Temel sınıf yıkıcısı (~ CWindowImplRoot), nesne yok edilmeden önce pencerenin gitmesini sağlar.
CWindowImpl, ve CMessageMap'ten CWindowImplBaseTCWindowImplRoottüretilen ' den TBase türetilir.
| 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 |
Devralma Hiyerarşisi
TBase
CWindowImplRoot
CWindowImplBaseT
CWindowImpl
Gereksinimler
Üst bilgi: atlwin.h
CWindowImpl::Create
Yeni bir pencere sınıfını temel alan bir pencere oluşturur.
HWND Create(
HWND hWndParent,
_U_RECT rect = NULL,
LPCTSTR szWindowName = NULL,
DWORD dwStyle = 0,
DWORD dwExStyle = 0,
_U_MENUorID MenuOrID = 0U,
LPVOID lpCreateParam = NULL);
Parametreler
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. Bu değer, pencere için nitelikler sınıfı tarafından sağlanan stille birleştirilir. Varsayılan değer, nitelik sınıfına stil üzerinde tam denetim sağlar. Olası değerlerin listesi için bkz . Windows SDK'sında CreateWindow .
dwExStyle
[in] Genişletilmiş pencere stili. Bu değer, pencere için nitelikler sınıfı tarafından sağlanan stille birleştirilir. Varsayılan değer, nitelik sınıfına stil üzerinde tam denetim sağlar. 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
Create önce henüz kaydedilmemişse pencere sınıfını kaydeder. Yeni oluşturulan pencere nesneye CWindowImpl otomatik olarak eklenir.
Not
SubclassWindow'u zaten çağırdıysanız aramayınCreate.
Var olan bir pencere sınıfını temel alan bir pencere sınıfı kullanmak için, sınıfınızı öğesinden CWindowImpl türetin ve DECLARE_WND_SUPERCLASS makroyu ekleyin. Mevcut pencere sınıfının pencere yordamı m_pfnSuperWindowProc kaydedilir. Daha fazla bilgi için bkz . CWindowImpl'e genel bakış.
Not
MenuOrID parametresinin değeri olarak 0 kullanılıyorsa, derleyici hatasından kaçınmak için 0U (varsayılan değer) olarak belirtilmelidir.
CWindowImpl::D efWindowProc
İleti eşlemesi tarafından işlenmeyen iletileri işlemek için WindowProc tarafından çağrılır.
LRESULT DefWindowProc(
UINT uMsg,
WPARAM wParam,
LPARAM lParam);
LRESULT DefWindowProc();
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.
Parametresiz işlevi, gerekli parametreleri geçerli iletiden otomatik olarak alır.
CWindowImpl::GetCurrentMessage
Yapıda MSG paketlenmiş geçerli iletiyi döndürür.
const MSG* GetCurrentMessage();
Dönüş Değeri
Geçerli ileti.
CWindowImpl::GetWindowProc
Geçerli pencere yordamını döndürür WindowProc.
virtual WNDPROC GetWindowProc();
Dönüş Değeri
Geçerli pencere yordamı.
Açıklamalar
Pencere yordamını kendi yordamınızla değiştirmek için bu yöntemi geçersiz kılın.
CWindowImpl::GetWndClassInfo
Pencere sınıfı bilgilerine erişmek için Create tarafından çağrılır .
static CWndClassInfo& GetWndClassInfo();
Dönüş Değeri
CWndClassInfo'nun statik bir örneği.
Açıklamalar
Varsayılan olarak, CWindowImpl yeni bir pencere sınıfı belirten DECLARE_WND_CLASS makro aracılığıyla bu yöntemi alır.
Varolan bir pencere sınıfını üst sınıfa almak için, sınıfınızı öğesinden CWindowImpl türetin ve geçersiz kılmak GetWndClassInfoiçin DECLARE_WND_SUPERCLASS makroyu ekleyin. Daha fazla bilgi için bkz . CWindowImpl'e genel bakış.
DECLARE_WND_CLASS ve DECLARE_WND_SUPERCLASS makrolarını kullanmanın yanı sıra, kendi uygulamanızla geçersiz kılabilirsiniz GetWndClassInfo .
CWindowImpl::m_pfnSuperWindowProc
Pencereye bağlı olarak, aşağıdaki pencere yordamlarından birine işaret eder.
WNDPROC m_pfnSuperWindowProc;
Açıklamalar
| Pencere türü | Pencere yordamı |
|---|---|
| DECLARE_WND_CLASS makro aracılığıyla belirtilen yeni bir pencere sınıfını temel alan bir pencere. | DefWindowProc Win32 işlevi. |
| DECLARE_WND_SUPERCLASS makro aracılığıyla belirtilen, var olan bir sınıfı değiştiren bir pencere sınıfını temel alan bir pencere. | Mevcut pencere sınıfının pencere yordamı. |
| Alt sınıf bir pencere. | Alt sınıf pencerenin özgün pencere yordamı. |
CWindowImpl::D efWindowProc , içinde m_pfnSuperWindowProckaydedilen pencere yordamına ileti bilgilerini gönderir.
CWindowImpl::OnFinalMessage
Son iletiyi aldıktan sonra çağrılır (genellikle WM_NCDESTROY).
virtual void OnFinalMessage(HWND hWnd);
Parametreler
hWnd
[in] Yok edilen pencerenin tutamacı.
Açıklamalar
varsayılan uygulaması OnFinalMessage hiçbir şey yapmaz, ancak bir pencereyi yok etmeden önce temizlemeyi işlemek için bu işlevi geçersiz kılabilirsiniz. Pencere yok etme işlemi sırasında nesnenizi otomatik olarak silmek istiyorsanız, bu işlevi çağırabilirsiniz delete this; .
CWindowImpl::SubclassWindow
hWnd tarafından tanımlanan pencereyi alt sınıflara ekler ve nesneye CWindowImpl 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 CWindowImpl::WindowProc kullanıyor. Özgün pencere yordamı m_pfnSuperWindowProc kaydedilir.
Not
Oluştur'u zaten çağırdıysanız aramayınSubclassWindow.
CWindowImpl::UnsubclassWindow
Alt sınıflanmış pencereyi nesneden CWindowImpl ayırır ve m_pfnSuperWindowProc kaydedilen özgün pencere yordamını geri yükler.
HWND UnsubclassWindow();
Dönüş Değeri
Daha önce alt sınıflanmış pencerenin tutamacı.
CWindowImpl::WindowProc
Bu statik işlev 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 uygun işleyicilere yönlendirmek için varsayılan ileti eşlemesini (BEGIN_MSG_MAP ile bildirilmiş) kullanır. Gerekirse, WindowProc ek ileti işleme için DefWindowProc'ı çağırır. Son ileti işlenmezse aşağıdakileri WindowProc yapar:
Pencerenin aboneliği kaldırılmışsa, abonelikten kaldırma işlemi gerçekleştirir.
öğesini temizler
m_hWnd.Pencere yok edilmeden önce OnFinalMessage'i çağırır.
İletileri işlemek için farklı bir mekanizma sağlamak üzere geçersiz kılabilirsiniz WindowProc .