Aracılığıyla paylaş


MFC ActiveX Denetimleri: Özel Yöntemler 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 yöntemler, COleControl tarafından uygulanmış değildir ve bu yüzden stok yöntemlerinden farklıdır. Denetiminize eklediğiniz her özel yöntem için uygulamayı sağlamanız gerekir.

Önemli

ActiveX, yeni geliştirme için kullanılmaması gereken eski bir teknolojidir. ActiveX'in yerine geçen modern teknolojiler hakkında daha fazla bilgi için bkz. ActiveX Denetimleri.

ActiveX denetim kullanıcısı, denetime özgü eylemleri gerçekleştirmek için herhangi bir zamanda özel bir yöntem çağırabilir. Özel yöntemler için dağıtım eşleme girdisi, DISP_FUNCTION biçimindedir.

Yöntem Ekleme Sihirbazı ile Özel Yöntem Ekleme

Aşağıdaki yordamda Özel PtInCircle yönteminin bir ActiveX denetiminin iskelet koduna eklenmesi gösterilmektedir. PtInCircle, denetime geçirilen koordinatların daire içinde mi yoksa dışında mı olduğunu belirler. Bu yordam başka özel yöntemler eklemek için de kullanılabilir. PtInCircle yöntemi adı ve parametresi yerine özel yöntem adınızı ve parametresini koyun.

Uyarı

Bu örnekte Olaylar makalesindeki işlev kullanılır InCircle . Bu işlev hakkında daha fazla bilgi için MFC ActiveX Denetimleri: ActiveX Denetimine Özel Olaylar Ekleme makalesine bakın.

Yöntem Ekleme Sihirbazı'nı kullanarak PtInCircle özel yöntemini eklemek için

  1. Denetimin 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 Yöntem Ekle'ye tıklayın.

    Bu işlem Yöntem Ekleme Sihirbazı'nı açar.

  5. Yöntem Adı kutusuna PtInCircle yazın.

  6. İç Ad kutusuna yöntemin iç işlevinin adını yazın veya varsayılan değeri (bu örnekte PtInCircle) kullanın.

  7. Dönüş Türü kutusunda, yöntemin dönüş türü için VARIANT_BOOL tıklayın.

  8. Parametre Türü ve Parametre Adı denetimlerini kullanarak xCoord adlı bir parametre ekleyin (OLE_XPOS_PIXELS yazın).

  9. Parametre Türü ve Parametre Adı denetimlerini kullanarak yCoord adlı bir parametre ekleyin (tür OLE_YPOS_PIXELS).

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

Özel Yöntemler için Yöntem Sihirbazı Değişiklikleri Ekleme

Özel bir yöntem eklediğinizde, Yöntem Ekleme Sihirbazı denetim sınıfı üst bilgisi (.H) ve uygulama (.CPP) dosyalarında bazı değişiklikler yapar. Aşağıdaki satır, kontrol sınıfı üst bilgilerindeki dağıtım eşleme bildirimine eklenir (.H) dosyası.

VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Bu kod adlı PtInCirclebir dağıtım yöntemi işleyicisi bildirir. Bu işlev, dış adı PtInCirclekullanılarak denetim kullanıcısı tarafından çağrılabilir.

Aşağıdaki satır denetimin IDL dosyasına eklenir.

[id(1), helpstring("method PtInCircle")] VARIANT_BOOL PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);

Bu satır, PtInCircle yöntemine, Yöntem Ekleme Sihirbazı yöntemleri ve özellikler listesindeki konumunu belirten özel bir ID numarası atar. Özel yöntemin eklenmesi için Yöntem Ekleme Sihirbazı kullanıldığından, bu yöntemin girişi projenin .IDL dosyasına otomatik olarak eklenmiştir.

Buna ek olarak, denetim sınıfının uygulama (.CPP) dosyasına aşağıdaki satır, denetimin dağıtım eşlemesine eklenir:

DISP_FUNCTION_ID(CMyAxUICtrl, "PtInCircle", dispidPtInCircle, PtInCircle, VT_BOOL, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)

DISP_FUNCTION makro, yöntemi PtInCircle denetimin işleyici işlevi PtInCircle ile eşler, dönüş türünün VARIANT_BOOL olduğunu bildirir ve VTS_XPOS_PIXELS ve VTS_YPOSPIXELS türlerinde iki parametreyi bildirerek PtInCircle'ye geçirecektir.

Son olarak, Add Method Sihirbazı, saplama işlevi CSampleCtrl::PtInCircle'yi denetimin uygulama (.CPP) dosyasının en altına ekler. Daha önce belirtildiği gibi çalışması için PtInCircle , aşağıdaki gibi değiştirilmelidir:

VARIANT_BOOL CMyAxUICtrl::PtInCircle(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
   AFX_MANAGE_STATE(AfxGetStaticModuleState());

   CPoint point(xCoord, yCoord);
   return InCircle(point);
}

Ayrıca bakınız

MFC ActiveX Denetimleri
Sınıf Görünümü ve Nesne Tarayıcısı Simgeleri