Denetime Özellik Ekleme (ATL Eğitmeni, Bölüm 3)
IPolyCtl
denetimin özel yöntemlerini ve özelliklerini içeren arabirimdir ve bu arabirime bir özellik eklersiniz.
Projenize özellik tanımlarını eklemek için
Sınıf Görünümü'nde dalı
Polygon
genişletin.öğesine sağ tıklayın
IPolyCtl
.Kısayol menüsünde Ekle'ye ve ardından Özellik Ekle'ye tıklayın. Özellik Ekle sihirbazı görüntülenir.
Özellik Adı olarak yazın
Sides
.Özellik Türü açılan listesinde öğesini seçin
short
.Özelliği eklemeyi tamamlamak için Tamam'a tıklayın.
Çözüm Gezgini Polygon.idl dosyasını açın ve arabirimin sonunda
IPolyCtl : IDispatch
aşağıdaki satırları değiştirin:short get_Sides(); void set_Sides(short value);
örneklerini şununla değiştirin:
[propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal); [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
Çözüm Gezgini PolyCtl.h dosyasını açın ve tanımından
m_clrFillColor
sonra aşağıdaki satırları ekleyin:short m_nSides; STDMETHOD(get_Sides)(short* pval); STDMETHOD(put_Sides)(short newval);
Artık özelliğini ayarlayıp almak için iskelet işlevlerine ve özelliği depolamak için bir değişkene sahip olmanıza rağmen, işlevleri uygun şekilde uygulamanız gerekir.
Get ve put yöntemlerini güncelleştirmek için
varsayılan değerini
m_nSides
ayarlayın. PolyCtl.h dosyasında oluşturucuya çizgi ekleyerek varsayılan şekli üçgen yapın:m_nSides = 3;
Get
vePut
yöntemlerini uygulayın.get_Sides
veput_Sides
işlev bildirimleri PolyCtl.h'ye eklendi. Şimdi veput_Sides
kodunuget_Sides
aşağıdakilerle PolyCtl.cpp ekleyin:STDMETHODIMP CPolyCtl::get_Sides(short* pVal) { *pVal = m_nSides; return S_OK; } STDMETHODIMP CPolyCtl::put_Sides(short newVal) { if (2 < newVal && newVal < 101) { m_nSides = newVal; return S_OK; } else { return Error(_T("Shape must have between 3 and 100 sides")); } }
yöntemi, get_Sides
işaretçi aracılığıyla pVal
özelliğin Sides
geçerli değerini döndürür. yönteminde put_Sides
kod, kullanıcının özelliğini kabul edilebilir bir değere ayarlamasını Sides
sağlar. En düşük değer 3 olmalıdır ve her taraf için bir nokta dizisi kullanılacağından, maksimum değer için 100 makul bir sınırdır.
Artık adlı Sides
bir özelliğiniz var. Sonraki adımda, çizim kodunu kullanacak şekilde değiştireceksiniz.