Aracılığıyla paylaş


İleti Eşlemeleri (ATL)

Uyarı

Etkin Şablon Kitaplığı (ATL) desteklenmeye devam eder. Ancak artık özellik eklemeyeceğiz veya belgeleri güncelleştirmeyeceğiz.

İleti eşlemesi, işleyici işlevini belirli bir ileti, komut veya bildirimle ilişkilendirir. ATL'nin ileti eşleme makrolarını kullanarak, bir pencere için ileti eşlemesi belirtebilirsiniz. pencere yordamları CWindowImpl, CDialogImplve CContainedWindowT içindeki bir pencerenin iletilerini ileti eşlemesine yönlendirir.

İleti işleyici işlevleri türünde BOOL&ek bir bağımsız değişken kabul etti. Bu bağımsız değişken, bir iletinin işlenip işlenmediğini gösterir ve varsayılan olarak TRUE olarak ayarlanır. Bir işleyici işlevi, bir iletiyi işlemediğini belirtmek için bağımsız değişkenini YANLIŞ olarak ayarlayabilir. Bu durumda ATL, ileti eşlemesinde bir işleyici işlevi aramaya devam eder. Bu bağımsız değişkeni YANLIŞ olarak ayarlayarak, önce bir iletiye yanıt olarak bazı eylemler gerçekleştirebilir ve ardından varsayılan işleme veya başka bir işleyici işlevinin iletiyi işlemeyi bitirmesine izin vekleyebilirsiniz.

Zincirlenmiş İleti Eşlemeleri

ATL, ileti işlemeyi başka bir sınıfta tanımlanan bir ileti eşlemesine yönlendiren ileti eşlemelerini zincirlemenizi de sağlar. Örneğin, bu sınıfa zincirleme tüm windows için tekdüzen davranış sağlamak için ayrı bir sınıfta ortak ileti işleme uygulayabilirsiniz. Bir temel sınıfa veya sınıfınızın veri üyesine zincir oluşturabilirsiniz.

ATL, çalışma zamanında başka bir nesnenin ileti eşlemesine zincirleme yapmanızı sağlayan dinamik zincirlemesini de destekler. Dinamik zincirleme uygulamak için sınıfınızı CDynamicChain'den türetmelisiniz. Ardından CHAIN_MSG_MAP_DYNAMIC makroyu ileti eşlemenizde bildirin. CHAIN_MSG_MAP_DYNAMIC, zincirlediğiniz nesneyi ve ileti eşlemesini tanımlayan benzersiz bir sayı gerektirir. Çağrısı aracılığıyla CDynamicChain::SetChainEntrybu benzersiz değeri tanımlamanız gerekir.

SınıfıN CMessageMap'ten türetilmiş olması koşuluyla, ileti eşlemesi bildiren herhangi bir sınıfa zincirleyebilirsiniz. CMessageMap bir nesnenin ileti eşlemelerini diğer nesnelerle kullanıma sunmasına izin verir. CWindowImpl'den CMessageMapzaten türetildiğini unutmayın.

Alternatif İleti Eşlemeleri

Son olarak ATL, ALT_MSG_MAP makroyla bildirilen alternatif ileti eşlemelerini destekler. Her alternatif ileti eşlemesi, ALT_MSG_MAP geçirdiğiniz benzersiz bir sayıyla tanımlanır. Alternatif ileti eşlemelerini kullanarak, birden çok pencereye ait iletileri tek bir haritada işleyebilirsiniz. Varsayılan olarak alternatif CWindowImpl ileti eşlemeleri kullanmadığını unutmayın. Bu desteği eklemek için türetilmiş sınıfınızdaki WindowProcyöntemini geçersiz kılın CWindowImpl ve ileti eşleme tanımlayıcısı ile çağırınProcessWindowMessage.

Ayrıca bkz.

Pencere Uygulama