Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Microsoft Foundation Sınıfları (MFC) kitaplığı desteklenmeye devam ediyor. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.
Özel olaylar, sınıfı COleControltarafından otomatik olarak tetiklenmedikleri için stok olaylarından farklıdır. Özel bir olay, denetim geliştiricisi tarafından belirlenen belirli bir eylemi olay olarak tanır. Özel olaylar için olay eşleme girdileri EVENT_CUSTOM makro tarafından temsil edilir. Aşağıdaki bölümde, ActiveX Denetim Sihirbazı kullanılarak oluşturulan bir ActiveX denetim projesi için özel bir olay uygulanır.
Olay Ekleme Sihirbazı ile Özel Olay Ekleme
Aşağıdaki yordam, ClickIn adlı belirli bir özel olay ekler. Diğer özel olayları eklemek için bu yordamı kullanabilirsiniz. Özel olay adınızı ve parametrelerini, ClickIn olay adı ve parametreleri yerine kullanın.
Olay Ekleme Sihirbazı'nı kullanarak ClickIn özel olayını eklemek için
Denetiminizin projesini yükleyin.
Sınıf Görünümü'nde ActiveX denetim sınıfınıza sağ tıklayarak kısayol menüsünü açın.
Kısayol menüsünde Ekle'ye ve ardından Olay Ekle'ye tıklayın.
Bu işlem Olay Ekleme Sihirbazı'nı açar.
Olay adı kutusunda, önce var olan herhangi bir olayı seçin, ardından Özel radyo düğmesine tıklayın ve ardından ClickIn yazın.
Dahili ad kutusuna olayın tetikleme işlevinin adını yazın. Bu örnekte, Olay Ekleme Sihirbazı (
FireClickIn) tarafından sağlanan varsayılan değeri kullanın.Parametre Adı ve Parametre Türü denetimlerini kullanarak xCoord (tür OLE_XPOS_PIXELS) adlı bir parametre ekleyin.
yCoord adlı ikinci bir parametre ekleyin (OLE_YPOS_PIXELS yazın).
Olayı oluşturmak için Son'a tıklayın.
Özel Olaylar için Olay Sihirbazı Değişiklikleri Ekleme
Özel bir olay eklediğinizde, Olay Ekleme Sihirbazı, kontrol sınıfının .H, .CPP ve .IDL dosyalarında değişiklikler yapar. Aşağıdaki kod örnekleri ClickIn olayına özeldir.
Denetim sınıfınızın üstbilgi (.H) dosyasına aşağıdaki satırlar eklenir:
void FireClickIn(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord)
{
FireEvent(eventidClickIn, EVENT_PARAM(VTS_XPOS_PIXELS VTS_YPOS_PIXELS), xCoord, yCoord);
}
Bu kod, FireClickIn fonksiyonunu, Olay Ekleme Sihirbazı'nı kullanarak tanımladığınız ClickIn olayı ve parametreleriyle çağıran bir satır içi fonksiyon bildirir.
Buna ek olarak, denetim için aşağıdaki satır, denetim sınıfınızın uygulama (.CPP) dosyasında bulunan olay eşlemesine eklenir.
EVENT_CUSTOM_ID("ClickIn", eventidClickIn, FireClickIn, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
EVENT_CUSTOM_ID("ClickIn", eventidClickIn, FireClickIn, VTS_XPOS_PIXELS VTS_YPOS_PIXELS)
Bu kod, Olay Ekleme Sihirbazı'nı kullanarak tanımladığınız parametreleri geçirerek ClickIn olayını satır içi bir işleve eşleştirir FireClickIn.
Son olarak, aşağıdaki satır denetiminizin .IDL dosyasına eklenir:
[id(1)] void ClickIn(OLE_XPOS_PIXELS xCoord, OLE_YPOS_PIXELS yCoord);
Bu satır ClickIn olayına Olay Ekleme Sihirbazı olay listesindeki olayın konumundan alınan belirli bir kimlik numarası atar. Olay listesindeki girdi, kapsayıcının olayı tahmin etmesini sağlar. Örneğin, olay tetiklendiğinde çalıştırılacak olan işleyici kodunu sağlayabilir.
FireClickIn Çağrılır
Artık Olay Ekleme Sihirbazı'nı kullanarak ClickIn özel olayını eklediğinize göre, bu olayın ne zaman tetikleneceğine karar vermeniz gerekir. Uygun eylem gerçekleştiğinde FireClickIn çağırarak bunu yaparsınız. Bu tartışmada, bir kullanıcı dairesel veya eliptik bir bölgeye tıkladığında ClickIn olayını tetiklemek için denetim, bir ileti işleyicisinin içindeki InCircle fonksiyonunu WM_LBUTTONDOWN kullanır. Aşağıdaki yordam işleyiciyi WM_LBUTTONDOWN ekler.
Olay Ekleme Sihirbazı ile ileti işleyicisi eklemek için
Denetiminizin projesini yükleyin.
Sınıf Görünümü'nde ActiveX denetim sınıfınızı seçin.
Özellikler penceresinde, ActiveX denetimi tarafından işlenebilen iletilerin listesini görürsünüz. Kalın olarak gösterilen herhangi bir iletiye zaten atanmış bir işleyici işlevi vardır.
İşlemek istediğiniz iletiyi seçin. Bu örnek için
WM_LBUTTONDOWNöğesini seçin.Sağdaki açılır liste kutusundan <OnLButtonDown Ekle>'yi seçin.
Sınıf Görünümü'nde yeni işleyici işlevine çift tıklayarak ActiveX denetiminizin uygulama (.CPP) dosyasındaki ileti işleyici koduna atlayın.
Aşağıdaki kod örneği, denetim penceresinde sol fare düğmesine her tıklandığında işlevi çağırır InCircle . Bu örnek, WM_LBUTTONDOWNOnLButtonDown özetindeki işleyici işlevinde bulunabilir.
void CMyAxUICtrl::OnLButtonDown(UINT nFlags, CPoint point)
{
if (InCircle(point))
FireClickIn(point.x, point.y);
COleControl::OnLButtonDown(nFlags, point);
}
Uyarı
Olay Ekleme Sihirbazı fare düğmesi eylemleri için ileti işleyicileri oluşturduğunda, temel sınıfın aynı ileti işleyicisine yönelik bir çağrı otomatik olarak eklenir. Bu çağrıyı kaldırmayın. Denetiminiz stok fare iletilerinden herhangi birini kullanıyorsa, fare yakalamanın düzgün şekilde işlendiğinden emin olmak için temel sınıftaki ileti işleyicileri çağrılmalıdır.
Aşağıdaki örnekte, olay yalnızca tıklama denetimin içindeki döngüsel veya eliptik bir bölgede gerçekleştiğinde tetikler. Bu davranışı elde etmek için, InCircle işlevini denetiminizin uygulama (.CPP) dosyasına yerleştirebilirsiniz.
VARIANT_BOOL CMyAxUICtrl::InCircle(CPoint& point)
{
CRect rc;
GetClientRect(rc);
// Determine radii
double a = (rc.right - rc.left) / 2;
double b = (rc.bottom - rc.top) / 2;
// Determine x, y
double x = point.x - (rc.left + rc.right) / 2;
double y = point.y - (rc.top + rc.bottom) / 2;
// Apply ellipse formula
return ((x * x) / (a * a) + (y * y) / (b * b) <= 1);
}
Ayrıca, denetiminizin başlık (.H) dosyasına InCircle işlevinin aşağıdaki bildirimini eklemeniz gerekir.
VARIANT_BOOL InCircle(CPoint& point);
Özel Etkinlikler ve Hisse Senedi İsimleri
Stok olaylarıyla aynı ada sahip özel olaylar oluşturabilirsiniz, ancak her ikisini de aynı kontrol bileşeninde kullanamazsınız. Örneğin, Click adlı özel bir olay oluşturmak isteyebilirsiniz. Bu olay, stok olayı Click'in normalde tetiklendiği zamanlarda tetiklenmeyecektir. Daha sonra click olayını istediğiniz zaman tetikleme işlevini çağırarak tetikleyebilirsiniz.
Aşağıdaki yordam özel bir Click olayı ekler.
Stok olay adını kullanan özel bir etkinlik eklemek için
Denetiminizin projesini yükleyin.
Sınıf Görünümü'nde ActiveX denetim sınıfınıza sağ tıklayarak kısayol menüsünü açın.
Kısayol menüsünde Ekle'ye ve ardından Olay Ekle'ye tıklayın.
Bu işlem Olay Ekleme Sihirbazı'nı açar.
Olay Adı açılan listesinde bir hisse senedi olayı adı seçin. Bu örnek için Tıklayın'ı seçin.
Olay Türü için Özel'i seçin.
Olayı oluşturmak için Son'a tıklayın.
Kodunuzda uygun yerlerde
FireClickçağırın.
Ayrıca bakınız
MFC ActiveX Denetimleri
MFC ActiveX Denetimleri: Yöntemler
COleControl Sınıfı