Şimdi sen-ecek eklemek a ClickIn ve bir ClickOut atl denetim olay. Sen-ecek ateş ClickIn Çokgen ve ateş içinde tıkladığında, olay ClickOut kullanıcı dışında tıklarsa.
2. Adımda tam de&netim oluşturduğunuzda, Destek bağlantı noktaları onay box.nbsp seçilen; Bu oluşturulan IPolyCtlEvents .idl dosyanızdaki arabirimi. Arabirim adı alt çizgi ile başlar unutmayın. Bu arabirimi bir iç arabirim olduğunu belirtmek için bir kuralıdır. Böylece, com nesneleri taramak izin programları kullanıcı arabirimi görüntülememeyi seçebilirsiniz. Ayrıca Destek bağlantı noktaları belirtmek için bir satır ekledi dikkat .idl dosyasında IPolyCtlEvents varsayılan kaynak arabirimdir. Kaynak özelliğin öylesine o-ecek seslenmek bu arabirim kapsayıcı denetimi bildirimleri, kaynağını gösterir.
ClickIn ve ClickOut yöntemlerini eklemek gerekir şimdi IPolyCtlEvents arabirimi:
IPolyCtlEvents ClassView ve açılan menüden seçerek Ekleme yöntemi....void.ClickIn Method Name kutusunda.[in] long x, [in] long y Parametreler kutusunda.
Kod içi&n bir yöntem olarak eklendiğini görmek için .idl dosyasını denetleyin IPolyCtlEvents dispinterface.nbsp; Ardından tanımlamak için aynı yordamı kullanın bir ClickOut yöntemi ile aynı parametreleri ve dönüş türü. .İdl dosyasındaki IPolyCtlEvents görüntüleme arabirimi aşağıdaki gibi görünmelidir:
görüntüleme arabirimi _IPolyCtlEvents
{
özellikleri:
yöntem:
[id(1), helpstring ("yöntemi ClickIn")] void ClickIn ([gelen] uzun [In] uzun y x);
[id(2), helpstring ("yöntemi ClickOut")] void ClickOut ([gelen] uzun [In] uzun y x);
}
ClickInVe ClickOut yöntemleri, x ve y koordinatları tıklattığınız nokta parametreler olarak.
Şimdi senin tür kitaplığı oluşturun. Bunun için projenizi yeniden veya FileView .idl dosyayı sağ tıklatın ve Polygon.idl derlemektıklatın. Bu tür kitaplığı Polygon.tlb dosyası oluşturur.
Sonra bir bağlantı noktası arabirimi ve denetim için bir bağlantı noktası konteyner arabirimi uygular. (com, olayları bağlantı noktaları bir mekanizma uygulanır. Bir com nesnesi olayları almak için bir kapsayıcı uygulayan com nesnesinin bağlantı noktası Danışma bir bağlantı kurar. Bir com nesnesinin birden çok bağlantı noktası olduğundan, com nesnesi ayrıca bir bağlantı noktası konteyner arabirimini uygular. Bu arabirim üzerinden, konteyner are taraftar hangi bağlantı noktalarını belirleyebilirsiniz.) IConnectionPoint arabirimi uygulayan bir bağlantı noktası adı verilir ve bir bağlantı noktası kapsayıcı uygulayan arabirim IConnectionPointContainer denir.
IConnectionPointuygulamak için bir bağlantı noktası Sihirbazı'na ClassView kullanın. Bu sihirbazı, senin tür kitaplığı okuyarak ve ateş her olay için bir işlevi uygulama IConnectionPoint arabirimi oluşturur.
Sihirbazı çalıştırmak için aşağıdaki adımları izleyin.:

FileViewüretilen PolygonCP.h dosyasına bakarsanız adında bir sınıf vardır gördüğünüz CProxy_PolyCtlEvents IConnectionPointImpltüretilmiştir. PolygonCP.h de iki yöntemi tanımlar Fire_ClickIn ve Fire_ClickOut , iki koordinat parametreleri almakta. Bunlar yangın kontrol gelen bir olayı istediğinizde arama yöntemleri.
Sihirbaz ayrıca, de&netimin birden çok devralma list.nbsp için CProxy_PolyEvents ve IConnectionPointContainerImpl eklendi; Sihirbaz ayrıca IConnectionPointContainer için com haritaya uygun girdileri ekleyerek maruz.
Etki&nlikler desteklemek için kod uygulama tamamlanmış demektir. Şimdi, uygun anda olayları ateşlenmesine bazı kodlar ekleyin. Unutmayın, yangın için gidiyoruz bir ClickIn veya ClickOut kullanıcı denetimi farenin sol düğmesini tıklattığında bir olay. Kullanıcı düğmeyi tıklattığında öğrenmek için önce wm_lbuttondown ileti için bir işleyici ekleyin. ClassView, CPolyCtl sınıfı sağ tıklatın ve kısayol menu.nbsp Ekleme Windows ileti işleyicisi... seçin; Sonra sol taraftaki listeden wm_lbuttondown seçin ve İşleyici Ekle düğmesini tıklatın. Tamam ' ı tıklatın.
Yeni kodu (sihirbaz tarafından yerleştirilen herhangi bir kodu silme) PolyCtl.h OnLButtonDown işlevine eklenir böylece OnLButtonDown Şimdi bu gibi görünüyor:
Lresult CPolyCtl::OnLButtonDown(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOLamp; bHandled)
{
hrgn hRgn;
word xPos = LOWORD(lParam); / / Yatay imleç konumu
word yPos = HIWORD(lParam); / / Dikey imleç konumu
CalcPoints(m_rcPos);
/ / Puan bizim listeden bir bölge oluşturma
hRgn = CreatePolygonRgn (& m_arrPoint [0], m_nSides, sarma);
/ / Bizim çokgen tıklattığınız nokta ise, ClickIn sonra yangın
/ / Biz yangın olayı başka türlü ClickOut olay
Eğer (PtInRegion (hRgn, xPos, yPos))
Fire_ClickIn (xPos, yPos);
başka
Fire_ClickOut (xPos, yPos);
/ / Biz oluşturduğunuz bölgeyi silmek
DeleteObject(hRgn);
return 0;
}
Çünkü zaten poligon noktaları hesaplanmış OnDraw işlev, onları kullanmak OnLButtonDown bir bölge oluşturmak için. Sonra tıklattığınız nokta çokgeni olup olmadığını belirlemek için PtInRegion API işlevini kullanın.
uMsgParametresidir işlenen Windows ileti Kımlığı. Böylece, mesajlar bir dizi işleyen bir işleve sahip. wParamVe lParam işlenen ileti için standart değerleri vardır. Parametre bHandled işlevi ileti mi ele belirtmenize olanak verir. Varsayılan değer doğru işlev mesajı ele, ama sen-ebilmek koymak o belirtmek için ayarlanır sahte. Böylece-ecek neden başka bir ileti işleyicisi işlevi iletinin gönderileceği seyir devam atl.
Şimdi, olaylar de&neyin. Yapı denetimi ve ActiveX denetimi sınaması kapsayıcısı yeniden başlatın. Bu kez, olay günlüğü window.nbsp görüntüleme; Output penceresine olayları yönlendirmek için günlüğü seçenekleri menüsünden seçin ve günlük çıkış penceresiniseçin. Şimdi denetim ekleme ve pencerede tıklatmayı deneyin. Dikkat edin ClickIn içinde dolu çokgen tıklatırsanız pişirilir ve ClickOut dışında tıklatıldığında harekete geçirilir.
Sonraki bir özellik sayfası ekler.
4. Adıma geri |nbsp; Adım 6