Aracılığıyla paylaş


MFC ActiveX Denetimleri: Özel Özellikler Ekleme

Uyarı

Microsoft Foundation Sınıfları (MFC) kitaplığı desteklenmeye devam ediyor. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.

Özel özellikler, COleControl sınıfı tarafından henüz uygulanmamış olması bakımından hisse senedi özelliklerinden farklıdır. Özel özellik, bir ActiveX denetiminin belirli bir durumunu veya görünümünü denetimi kullanan bir programcıya göstermek için kullanılır.

Bu makalede, Özellik Ekleme Sihirbazı kullanılarak ActiveX denetimine özel özellik ekleme ve sonuçta yapılan kod değişiklikleri açıklanmaktadır. Konular şunlardır:

Özel özellikler dört uygulama türüyle gelir: Üye Değişkeni, Bildirimli Üye Değişkeni, Alma/Ayarlama Yöntemleri ve Parametreli.

  • Üye Varyant İmplementasyonu

    Bu uygulama, özelliğin durumunu denetim sınıfında üye değişkeni olarak temsil eder. Özellik değerinin ne zaman değiştiğini bilmek önemli olmadığında Üye Değişkeni uygulamasını kullanın. Bu uygulama, üç türden özelliği için en az miktarda destek kodu oluşturur. Üye değişkeninin uygulanması için dağıtım haritası giriş makrosu DISP_PROPERTY'dir.

  • Bildirim Uygulamasıyla Üye Değişkeni

    Bu uygulama bir üye değişkeni ve Özellik Ekleme Sihirbazı tarafından oluşturulan bir bildirim işlevinden oluşur. Bildirim işlevi, özellik değeri değiştikten sonra çerçeve tarafından otomatik olarak çağrılır. Bir özellik değeri değiştikten sonra bildirim almanız gerektiğinde Bildirim uygulamasıyla Üye Değişkeni'ni kullanın. Bu uygulama bir işlev çağrısı gerektirdiği için daha fazla zaman gerektirir. Bu uygulama için dağıtım eşlemesi giriş makrosu DISP_PROPERTY_NOTIFY'dir.

  • Get/Set Metotlarının Uygulanması

    Bu uygulama, kontrol sınıfında bir çift üye işlevden oluşur. Get/Set Methods uygulaması, denetimin kullanıcısı özelliğin geçerli değerini istediğinde Get member işlevini ve denetimin kullanıcısı özelliğin değiştirilmesini istediğinde Üyeyi ayarla işlevini otomatik olarak çağırır. Çalışma zamanında bir özelliğin değerini hesaplamanız, gerçek özelliği değiştirmeden önce kontrolün kullanıcı tarafından geçirilen bir değeri doğrulamanız veya salt okunur ya da salt yazılır bir özellik türü uygulamanız gerektiğinde bu uygulamayı kullanın. Bu uygulama için dağıtım eşleme girdisi makro DISP_PROPERTY_EX şeklindedir. Aşağıdaki bölümde, Özel Özellik Eklemek için Özellik Ekleme Sihirbazı'nı kullanma, bu uygulamayı göstermek için CircleOffset özel özelliğini kullanır.

  • Parametreli Uygulama

    Parametreli uygulama, Özellik Ekleme Sihirbazı tarafından desteklenir. Parametreli bir özellik (bazen özellik dizisi olarak da adlandırılır), denetiminizin tek bir özelliği aracılığıyla bir değer kümesine erişmek için kullanılabilir. Bu uygulama için gönderim haritası girdisi makro DISP_PROPERTY_PARAM. Bu türü uygulama hakkında daha fazla bilgi için ActiveX Denetimleri: Gelişmiş Konular makalesindeki Parametreli Özellik Uygulama makalesine bakın.

Özel Özellik Eklemek için Özellik Ekleme Sihirbazı'nı Kullanma

Aşağıdaki yordamda Get/Set Methods uygulamasını kullanan CircleOffset adlı özel bir özellik ekleme işlemi gösterilmektedir. CircleOffset özel özelliği, kullanıcıya daireyi denetimin sınırlayıcı çerçevesinin merkezinden kaydırma olanağı tanır. Get/Set Methods dışında bir uygulamayla özel özellikler ekleme yordamı çok benzerdir.

Bu yordam, istediğiniz diğer özel özellikleri eklemek için de kullanılabilir. CircleOffset özellik adı ve parametreleri yerine özel özellik adınızı kullanın.

Özellik Ekleme Sihirbazı'nı kullanarak CircleOffset özel özelliğini eklemek için

  1. Denetiminizin projesini yükleyin.

  2. Sınıf Görünümü'nde, denetiminizin kitaplık düğümünü genişletin.

  3. Kısayol menüsünü açmak için denetiminizin arabirim düğümüne (kitaplık düğümünün ikinci düğümü) sağ tıklayın.

  4. Kısayol menüsünde Ekle'ye ve ardından Özellik Ekle'ye tıklayın.

    Bu işlem Özellik Ekleme Sihirbazı'nı açar.

  5. Özellik Adı kutusuna CircleOffset yazın.

  6. Uygulama Türü için Yöntemleri Al/Ayarla'ya tıklayın.

  7. Özellik Türü kutusunda öğesini seçinshort.

  8. Get ve Set İşlevleriniz için benzersiz adlar yazın veya varsayılan adları kabul edin.

  9. Finish (Son) düğmesine tıklayın.

Özel Özellikler için Özellik Sihirbazı Değişiklikleri Ekleme

CircleOffset özel özelliğini eklediğinizde, Özellik Ekleme Sihirbazı denetim sınıfının başlık (.h) ve uygulama (.cpp) dosyalarında değişiklik yapar.

H dosyasına, GetCircleOffset ve SetCircleOffset adlı iki işlevi bildirmek için aşağıdaki satırlar eklenir:

SHORT GetCircleOffset(void);
void SetCircleOffset(SHORT newVal);

Denetiminizin .IDL dosyasına aşağıdaki satır eklenir:

[id(2), helpstring("property CircleOffset")] SHORT CircleOffset;
[id(3), helpstring("property MyProperty")] SHORT MyProperty;

Bu satır, CircleOffset özelliğine, Özellik Ekleme Sihirbazı'nın yöntemler ve özellikler listesindeki yöntemin konumundan alınan belirli bir kimlik numarası atar.

Buna ek olarak, CircleOffset özelliğini denetimin iki işleyici işlevine eşlemek için denetim sınıfının .CPP dosyasındaki dağıtım haritasına aşağıdaki satır eklenir.

DISP_PROPERTY_EX_ID(CMyAxUICtrl, "CircleOffset", dispidCircleOffset, GetCircleOffset, SetCircleOffset, VT_I2)

Son olarak, GetCircleOffset ve SetCircleOffset işlevlerinin uygulamaları denetimin .CPP dosyasının sonuna eklenir. Çoğu durumda, Get işlevini özelliğin değerini döndürecek şekilde değiştireceksiniz. Set işlevi genellikle özellik değişmeden önce veya sonra yürütülmesi gereken kodu içerir.

void CMyAxUICtrl::SetCircleOffset(SHORT /*newVal*/)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   // TODO: Add your property handler code here

   SetModifiedFlag();
}

Özellik Ekleme Sihirbazı'nın SetModifiedFlag'a Set işlevinin gövdesine otomatik olarak bir çağrı eklediğini unutmayın. Bu işlevin çağrılması denetimi değiştirildi olarak işaretler. Bir denetimin durumu değiştirildiyse, kapsayıcı kaydedildiği zaman yeni durumu kaydedilir. Denetimin kalıcı durumunun bir parçası olarak kaydedilen bir özellik değeri değiştirdiği her durumda bu işlev çağrılmalıdır.

Ayrıca bakınız

MFC ActiveX Denetimleri
MFC ActiveX Denetimleri: Özellikler
MFC ActiveX Denetimleri: Yöntemler
COleControl Sınıfı