Denetim Olayları (COM)
Bir denetim, özellikleri ve yöntemleri sağlamanın yanı sıra, istemcisine olayları bildirmek için giden arabirimler de sağlar. İstemcinin bu olayların işlenmesini desteklemesi gerekir. Bağlanabilir nesnelerin nasıl çalıştığı hakkında daha fazla bilgi için bkz. COM ve Bağlanabilir Nesneler Olayları.
Denetim, farklı amaçlar için farklı giden arabirimleri destekleyebilir. Tüm giden arabirimler denetimin tür bilgilerinde kaynak arabirimler olarak işaretlenir, ancak birincil giden arabirim olduğunu belirtmek için yalnızca biri varsayılan olarak işaretlenir.
Kapsayıcı, bir denetim tarafından tanımlanan giden arabirimlerden birini veya daha fazlasını destekleyebilir. Denetim, yalnızca giden arabirimlerinden bazıları için destek sağlayan kapsayıcılarla ilgilenmeye hazır olmalıdır.
Denetimler dört tür olayı destekler:
- İstek olayları. Denetim, giden arabirimde bir yöntemi çağırarak istemcisinden bir şey yapma izni ister ve bu nedenle bir istek olayını tetikler. İstemci, denetimin çağırmış olduğu yöntemindeki boole, out-parameter aracılığıyla denetime sinyal gönderir. Böylece istemci denetimin eylemi gerçekleştirmesini engelleyebilir.
- Olaylardan önce. Denetim, istemci şapkasına giden arabirimde bir yöntem çağırarak bir şey yapacağını bildirir, böylece bir olaydan önce tetikler. İstemcinin eylemi engelleme fırsatı yoktur, ancak gerçekleşmek üzere olan eylem göz önünde bulundurulduğunda gerekli tüm adımları atabilir.
- Olaylardan sonra. Denetim, giden arabirimde bir yöntemi çağırarak istemciye bir şey yaptığını bildirir ve bu nedenle bir olay sonrası tetikler. Yine istemci bu eylemi iptal edemez, ancak gerçekleşen eylem göz önüne alındığında gerekli adımları atabilir.
- Olayları yapın. Denetim, istemcisinin denetimin eylemini geçersiz kılıp bazı alternatif veya ek eylemler sağlamasına olanak sağlamak için bir do olayını tetikler. Genellikle, bir denetimin bir do olayı için çağırdığı yöntemin, istemciyle gerçekleşecek eylemler hakkında anlaşma yapmak için bir dizi parametresi vardır.
Denetimlerin destekleyebilecek standart olaylar için aşağıdaki dispid'ler tanımlanır: Click, DblClick, KeyDown, KeyPress, KeyUp, MouseMove, MouseUp ve Error. Bu standart olayların tümü, standart durumlarını gösteren negatif DISPID değerlerine sahiptir.
IOleControl::FreezeEvents yöntemi, TRUEile çağrıldığında, FreezeEventsFALSEile yeniden çağrılana kadar kapsayıcının denetimden olayları işlemeyi rahatsız edip etmeyeceğini bildirir. Bu süre boyunca denetim, kapsayıcının herhangi bir olayı işlemesine bağımlı olamaz. Bir olayın işlenmesi gerekiyorsa, FreezeEventsFALSEile çağrıldığında denetimin olayı kuyruğa alması gerekir.
İlgili konular