CComControl Sınıfı
Bu sınıf, ATL denetimlerini oluşturmak ve yönetmek için yöntemler 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 WinBase = CWindowImpl<T>>
class ATL_NO_VTABLE CComControl : public CComControlBase,
public WinBase;
Parametreler
T
Denetimi uygulayan sınıf.
WinBase
Pencereleme işlevlerini uygulayan temel sınıf. Varsayılan olarak CWindowImpl'yi kullanır.
Üyeler
Ortak Oluşturucular
Veri Akışı Adı | Açıklama |
---|---|
CComControl::CComControl | Oluşturucu. |
Genel Yöntemler
Veri Akışı Adı | Açıklama |
---|---|
CComControl::ControlQueryInterface | İstenen arabirim için bir işaretçi alır. |
CComControl::CreateControlWindow | Denetim için bir pencere oluşturur. |
CComControl::FireOnChanged | Kapsayıcının havuzuna bir denetim özelliğinin değiştiğini bildirir. |
CComControl::FireOnRequestEdit | Kapsayıcının havuzuna bir denetim özelliğinin değişmek üzere olduğunu ve nesnenin havuza nasıl devam etmek istediğini bildirir. |
CComControl::MessageBox | İleti kutusu oluşturmak, görüntülemek ve çalıştırmak için bu yöntemi çağırın. |
Açıklamalar
CComControl
, ATL denetimleri için yararlı denetim yardımcı işlevleri ve temel veri üyeleri kümesidir. ATL Denetim Sihirbazı'nı kullanarak standart bir denetim veya DHTML denetimi oluşturduğunuzda, sihirbaz sınıfınızı öğesinden CComControl
otomatik olarak türetecektir. CComControl
yöntemlerinin çoğunu CComControlBase'den türetir.
Denetim oluşturma hakkında daha fazla bilgi için bkz. ATL Öğreticisi. ATL Proje Sihirbazı hakkında daha fazla bilgi için ATL Projesi Oluşturma makalesine bakın.
Yöntemlerin CComControl
ve veri üyelerinin gösterimi için CIRC örneğine bakın.
Devralma Hiyerarşisi
WinBase
CComControl
Gereksinimler
Üst bilgi: atlctl.h
CComControl::CComControl
Oluşturucu.
CComControl();
Açıklamalar
CWindowImpl aracılığıyla devralınan veri üyesini m_hWnd
geçirerek CComControlBase oluşturucuyu çağırır.
CComControl::ControlQueryInterface
İstenen arabirim için bir işaretçi alır.
virtual HRESULT ControlQueryInterface(const IID& iid, void** ppv);
Parametreler
iid
[in] İstenen arabirimin GUID'i.
ppv
[out] iid tarafından tanımlanan arabirim işaretçisi işaretçisi veya arabirim bulunamazsa NULL.
Açıklamalar
Yalnızca COM eşleme tablosundaki arabirimleri işler.
Örnek
// Retrieve the control's IOleObject interface. Note interface
// is automatically released when pOleObject goes out of scope
CComPtr<IOleObject> pOleObject;
ControlQueryInterface(IID_IOleObject, (void**)&pOleObject);
CComControl::CreateControlWindow
Varsayılan olarak, çağrısı CWindowImpl::Create
yaparak denetim için bir pencere oluşturur.
virtual HWND CreateControlWindow(HWND hWndParent, RECT& rcPos);
Parametreler
hWndParent
[in] Üst veya sahip penceresinin tutamacı. Geçerli bir pencere tutamacı sağlanmalıdır. Denetim penceresi, üst penceresinin alanıyla sınırlı.
rcPos
[in] Oluşturulacak pencerenin başlangıç boyutu ve konumu.
Açıklamalar
Tek bir pencere oluşturmaktan başka bir şey yapmak istiyorsanız( örneğin, biri denetiminiz için bir araç çubuğuna dönüşen iki pencere oluşturmak) bu yöntemi geçersiz kılın.
Örnek
RECT rc = {10,10,210,110};
HWND hwndParent, hwndControl;
// get HWND of control's parent window from IOleInPlaceSite interface
m_spInPlaceSite->GetWindow(&hwndParent);
hwndControl = CreateControlWindow(hwndParent, rc);
CComControl::FireOnChanged
Kapsayıcının havuzuna bir denetim özelliğinin değiştiğini bildirir.
HRESULT FireOnChanged(DISPID dispID);
Parametreler
dispID
[in] Değiştirilen özelliğin tanımlayıcısı.
Dönüş Değeri
Standart HRESULT değerlerinden biri.
Açıklamalar
Denetim sınıfınız IPropertyNotifySink'ten türetilirse, bu yöntem belirtilen denetim özelliğinin değiştiğini tüm bağlı IPropertyNotifySink
arabirimlere bildirmek için CFirePropNotifyEvent::FireOnChanged öğesini çağırır. Denetim sınıfınız öğesinden IPropertyNotifySink
türetilmezse, bu yöntem S_OK döndürür.
Denetiminiz bağlantı noktalarını desteklemese bile bu yöntemi çağırmak güvenlidir.
Örnek
STDMETHODIMP CMyControl::put_MyText(BSTR newVal)
{
// store newVal in CComBstr member
m_bstrMyText = newVal;
// note the DISPID for the MyText property is 3 in this example
FireOnChanged(3);
return S_OK;
}
CComControl::FireOnRequestEdit
Kapsayıcının havuzuna bir denetim özelliğinin değişmek üzere olduğunu ve nesnenin havuza nasıl devam etmek istediğini bildirir.
HRESULT FireOnRequestEdit(DISPID dispID);
Parametreler
dispID
[in] Değiştirmek üzere olan özelliğin tanımlayıcısı.
Dönüş Değeri
Standart HRESULT değerlerinden biri.
Açıklamalar
Denetim sınıfınız IPropertyNotifySink'ten türetiliyorsa, bu yöntem CFirePropNotifyEvent::FireOnRequestEdit öğesini çağırarak tüm bağlı IPropertyNotifySink
arabirimlere belirtilen denetim özelliğinin değişmek üzere olduğunu bildirir. Denetim sınıfınız öğesinden IPropertyNotifySink
türetilmezse, bu yöntem S_OK döndürür.
Denetiminiz bağlantı noktalarını desteklemese bile bu yöntemi çağırmak güvenlidir.
Örnek
STDMETHODIMP CMyControl::put_MyTitle(BSTR newVal)
{
// the DISPID for MyTitle in this example is 4
DISPID dispID = 4;
// make sure we can change the property
if (FireOnRequestEdit(dispID) == S_FALSE)
return S_FALSE;
// store newVal in CComBstr member
m_bstrMyTitle = newVal;
// signal that the property has been changed
FireOnChanged(dispID);
return S_OK;
}
CComControl::MessageBox
İleti kutusu oluşturmak, görüntülemek ve çalıştırmak için bu yöntemi çağırın.
int MessageBox(
LPCTSTR lpszText,
LPCTSTR lpszCaption = _T(""),
UINT nType = MB_OK);
Parametreler
lpszText
İleti kutusunda görüntülenecek metin.
lpszCaption
İletişim kutusu başlığı. NULL ise (varsayılan), "Hata" başlığı kullanılır.
nType
İletişim kutusunun içeriğini ve davranışını belirtir. Kullanılabilir farklı ileti kutularının listesi için Windows SDK belgelerindeki MessageBox girdisine bakın. Varsayılan değer basit bir Tamam düğmesi sağlar.
Dönüş Değeri
Windows SDK belgelerinde MessageBox altında listelenen menü öğesi değerlerinden birini belirten bir tamsayı değeri döndürür.
Açıklamalar
MessageBox
hem geliştirme sırasında hem de kullanıcıya hata veya uyarı iletisi görüntülemenin kolay bir yolu olarak kullanışlıdır.
Ayrıca bkz.
CWindowImpl Sınıfı
Sınıfa Genel Bakış
CComControlBase Sınıfı
CComCompositeControl Sınıfı