GUI Toolkit'lerin çoğu günümüzde Signals + Slots modelini kullanıyor. Qt ve GTK + idi, eğer yanılmıyorsam, ona öncülük etti.
Widget'lar veya grafiksel nesneler (bazen görüntülenmeyenler bile) ana döngü işleyicisine sinyal gönderir . Ana döngü işleyici daha sonra o widget / grafik nesnesi için atanan olayları , geri çağrıları veya yuvaları çağırır . virtual
Önceden tanımlanmış tüm sinyalleri işlemek için araç seti tarafından önceden sağlanan varsayılan (ve çoğu durumda ) olay işleyicileri vardır, bu nedenle, geliştiricinin her bir mesajın tüm ana döngüsünü ve işleyicisini kendisi yazmak zorunda olduğu önceki tasarımların aksine (WINAPI'yi düşünün), geliştirici sadece yeni işlevsellik uygulamak için ihtiyaç duyduğu sinyaller hakkında endişelenmelidir.
Şimdi bu tasarım bildiğim kadarıyla çoğu modern araç setinde kullanılıyor. Qt, GTK +, FLTK vb. Var. Java Swing var. C # bile bunun için bir dil özelliğine sahiptir (etkinlikler ve delegeler) ve Windows Forms bu tasarımda geliştirilmiştir. Aslında, son on yılda, GUI programlama için bu tasarım bir tür yazılı olmayan bir standart haline geldi. Verimliliği arttırdığı ve daha fazla soyutlama sağladığı için.
Ancak sorum şu:
Modern GUI programlama için paralel veya pratik herhangi bir alternatif tasarım var mı?
Yani Signals + Slots tasarımı, şehirdeki tek pratik tasarım mı? GUI Programlama'yı başka herhangi bir tasarımla yapmak mümkün müdür ? Alternatif bir tasarım üzerine inşa edilmiş modern (tercihen başarılı ve popüler) GUI araç kitleri var mı?
std::function
, eşzamansız bir sinyal olarak değil . Buna ek olarak, WinAPI gelmez sağlamakDefWindowProc
varsayılan uygulama olarak, Windows mesajları işler hangi. Bu yüzden sorunuzun hatalı mantığa dayandığını söyleyeceğim.