mfc ActiveX denetimleri: ActiveX denetiminde resimleri kullanma
Türü resim ve ActiveX denetiminizi uygulamak nasıl anlatılmaktadır.Konular:
Özel Resim Özellikleri'ne genel bakış
ActiveX denetiminizi özel resim özelliği uygulama
Denetim projenize eklemeler
Özel Resim Özellikleri'ne genel bakış
Resim türü Grup türlerinin ortak bazı ActiveX denetimlerini biridir.Resim türü meta dosyaları, bitmapler veya simgeleri işleme ve kullanıcının ActiveX denetiminde görüntülenecek resim belirtmesine izin verir.Özel Resim özellikleri, bir resim nesnesi ve resim özellik denetimi kullanıcı erişimine izin Get/Set işlevleri kullanılarak uygulanır.Hisse senedi resim özellik sayfası özel resim özelliğini denetimi kullanıcıların erişim.
Standart resim türünün yanı sıra, yazı tipi ve renk tipi de mevcuttur.Makale ActiveX denetiminizi standart yazı tipi kullanma hakkında daha fazla bilgi için bkz: mfc ActiveX denetimleri: yazı tiplerini kullanarak.
ActiveX denetiminin sınıf denetim içindeki resim özellik uygulamak için kullanabileceğiniz çeşitli bileşenleri sağlar.Bu bileşenler şunlardır:
CPictureHolder sınıfı.
Bu sınıf, özel resim özelliği tarafından görüntülenen öğe için resim nesnesi ve işlevselliği için kolay erişim sağlar.
Özellik türü için destek LPPICTUREDISP, Get/Set işlevleri ile uygulanan.
Sınıf özel özelliği veya özellikleri kolayca ekleyebilirsiniz görünümünü kullanarak, resmin türünü destekler.Makale Class View ile ActiveX denetimi özellikleri ekleme hakkında daha fazla bilgi için bkz: mfc ActiveX denetimleri: özellikler.
Bir denetimin Picture özelliği veya özellikleri işleyen bir özellik sayfası.
Bu özellik sayfası, bir grup hisse senedi özellik sayfaları ActiveX denetimleri için kullanılabilir bir parçasıdır.Makale ActiveX denetim özellik sayfaları hakkında daha fazla bilgi için bkz: mfc ActiveX denetimlerini: stok özellik sayfaları kullanarak
ActiveX denetiminizi özel resim özelliği uygulama
Bu bölümde anlatılan adımları tamamladıktan sonra Denetim, kullanıcı tarafından seçilen resimleri görüntüleyebilirsiniz.Kullanıcı, geçerli resim gösterir ve kullanıcı seçme farklı resimler için izin veren bir Gözat düğmesi olan bir özellik sayfası kullanılarak görüntülenen resmi değiştirebilir.
Özel bir resim özellik özel özellik resim türünü desteklemesi gerekir, ana fark diğer özellikleri uygulamak için kullanılan benzer bir işlem kullanılarak uygulanır.Madde resmi özelliğinin ActiveX denetimi tarafından çizilmesi için önce tam olarak uygulanabilir özelliği eklemeleri ve değişiklikler yapılmalıdır.
Özel bir resim özellik uygulamak için aşağıdakileri yapmalısınız:
Kod denetimi projenize eklemek.
Bir standart resim özellik sayfası kimliği türü veri üyesi CPictureHolderve özel bir özellik türü LPPICTUREDISP Get/Set ile uygulama eklenmesi gerekir.
Denetim sınıfınızın çeşitli işlevleri değiştirmek.
Bu değişiklikler, ActiveX denetiminizi çizim için sorumlu olan çeşitli işlevler için yapılır.
Denetim projenize eklemeler
Standart resim özellik sayfası özellik sayfası kimliği eklemek için aşağıdaki satırı sonra Ekle BEGIN_PROPPAGEIDS makro denetimi uygulama dosyasındaki (.CPP):
PROPPAGEID(CLSID_CPicturePropPage)
Sayım parametresi artırmanız gerekir, BEGIN_PROPPAGEIDS tarafından bir makro.Aşağıdaki satırı bunu göstermektedir:
BEGIN_PROPPAGEIDS(CMyAxPicCtrl, 2)
Eklemek için CPictureHolder denetim sınıfına veri üyesi denetimi üstbilgi dosyasında denetim sınıf bildirisinin korumalı bölümün altında aşağıdaki satırı ekleyin (.H):
CPictureHolder m_pic;
Bilgisayarınızın veri üye adı gerekli değildir m_pic; herhangi bir ad yeterli olacak.
Resim türünü destekleyen özel bir özellik daha ekleyin:
Özellik Ekleme Sihirbazı'nı kullanarak özel resim ekleme
Denetimin işleyiş proje yüklenemedi.
Class View'de kendi Denetim Kitaplığı düğümünü genişletin.
Arabirim düğümü (ikinci Kütüphane düğüm düğüm) denetimi için kısayol menüsünü açmak için sağ tıklatın.
Kısayol menüsünden seçin Ekle ve Ekleme özelliği.
İçinde Özellik adı özellik adı yazın.Örneğin amaçlı ControlPicture bu yordamda kullanılan.
İçinde Özellik türü kutusunda seçin IPictureDisp * özellik türü için.
İçin Uygulaması türü,'ı Get/Set yöntemlerini.
Get ve Set işlevleri için benzersiz adlarını yazın veya varsayılan adı kabul edin.(Bu örnekte, varsayılan ad GetControlPicture ve SetControlPicture kullanılır.)
Son düğmesini tıklatın.
Özellik Ekleme Sihirbazı'nı aşağıdaki kodu denetimi üstbilgisi gönderme eşleme açıklamalarda arasında ekler (.h) dosyası:
IPictureDisp* GetControlPicture(void);
void SetControlPicture(IPictureDisp* pVal);
Buna ek olarak, aşağıdaki kod denetim uygulaması gönderme haritasını eklendi (.cpp) dosyası:
DISP_PROPERTY_EX_ID(CMyAxPicCtrl, "ControlPicture", dispidControlPicture,
GetControlPicture, SetControlPicture, VT_PICTURE)
Özellik Ekleme Sihirbazı'nı, Denetim uygulama dosyasında aşağıdaki iki saplama işlevleri de ekler:
IPictureDisp* CWizardGenCtrl::GetControlPicture(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: Add your dispatch handler code here
return NULL;
}
void CWizardGenCtrl::SetControlPicture(IPictureDisp* /*pVal*/)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
// TODO: Add your property handler code here
SetModifiedFlag();
}
[!NOT]
Denetim sınıfı ve işlev adları Yukarıdaki örnekte farklılık gösterebilir.
Değişiklikleri projenize denetimi
Denetim projenize gerekli eklemeler yaptıktan sonra ActiveX denetiminin işleme etkileyen çeşitli işlevleri değiştirmek gerekir.Bu işlevler OnResetState, OnDraw, ve özel bir resim özelliğin Get/Set işlevleri kontrol uygulama dosyasında bulunur.(Bu örnekte, control sınıfı olarak adlandırıldığını unutmayın CSampleCtrl, CPictureHolder veri üyesi olarak adlandırılan m_pic, ve özel resim özellik adı ControlPicture.)
Denetimde OnResetState işlev, aşağıdaki isteğe bağlı satır çağrısının sonrasına ekleyin COleControl::OnResetState:
m_pic.CreateEmpty();
Bu, boş bir resim denetiminin resim ayarlar.
Düzgün resim çizmek için bir çağrı yapmak CPictureHolder::Render denetiminde OnDraw işlevi.Aşağıdaki örnek benzeyecek şekilde işlevinizde değişiklik:
void CMyAxPicCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& /*rcInvalid*/)
{
if (!pdc)
return;
m_pic.Render(pdc, rcBounds, rcBounds);
}
Denetimin özel resim özellik Get işlevini aşağıdaki satırı ekleyin:
return m_pic.GetPictureDispatch();
Denetimin özel resim özellik kümesi işlevi aşağıdaki satırları ekleyin:
m_pic.SetPictureDispatch(pVal);
InvalidateControl();
Tasarım zamanında eklenen bilgiler çalışma zamanında görünür böylece resim özelliği kalıcı yapılması gerekir.Aşağıdaki satırı COleControl-türetilmiş sınıf'ın DoPropExchange işlevi:
PX_Picture(pPX, _T("ControlPicture"), m_pic);
[!NOT]
Sınıf ve işlev adları Yukarıdaki örnekte farklılık gösterebilir.
Değişiklikleri tamamladıktan sonra özel resim özelliğinin yeni işlevselliğine sahiptir ve yeni özellik sınamak için Test kapsayıcı projenizi yeniden oluşturun.Bakın test özelliklerini ve olaylarını sınaması kapsayıcısı ile sınaması kapsayıcısı erişim hakkında bilgi için.