Większość zestawów GUI korzysta obecnie z modelu Sygnały i gniazda. To pionierem był Qt i GTK +, jeśli się nie mylę.
Wiesz, widżety lub obiekty graficzne (czasami nawet te, które nie są wyświetlane) wysyłają sygnały do procedury obsługi głównej pętli. Program obsługi pętli głównej wywołuje następnie zdarzenia , wywołania zwrotne lub gniazda przypisane do tego widgetu / obiektu graficznego. Zazwyczaj istnieją już domyślne (i w większości przypadków virtual
) procedury obsługi zdarzeń już dostarczone przez zestaw narzędzi do obsługi wszystkich predefiniowanych sygnałów, dlatego w przeciwieństwie do poprzednich projektów, w których programista musiał napisać całą pętlę główną i procedurę obsługi dla każdej wiadomości osobno (pomyśl WINAPI), programista musi się martwić tylko o sygnały, na których musi zaimplementować nową funkcjonalność.
O ile mi wiadomo, ten projekt jest używany w większości nowoczesnych zestawów narzędzi. Są Qt, GTK +, FLTK itp. Istnieje Java Swing. C # ma nawet funkcję języka (zdarzenia i delegaci), a Windows Forms został opracowany w tym projekcie. W rzeczywistości w ciągu ostatniej dekady ten projekt programowania GUI stał się rodzajem niepisanego standardu. Ponieważ zwiększa wydajność i zapewnia większą abstrakcję.
Moje pytanie brzmi jednak:
Czy istnieje jakiś alternatywny projekt, który jest równoległy lub praktyczny dla nowoczesnego programowania GUI?
tzn. czy projekt Sygnały + automaty jest jedynym praktycznym w mieście? Czy wykonalne jest programowanie GUI przy użyciu innego projektu? Czy są jakieś nowoczesne (najlepiej udane i popularne) zestawy narzędzi GUI oparte na alternatywnym projekcie?
std::function
, nie sygnał asynchroniczny. Ponadto WinAPI ma zapewnićDefWindowProc
który przetwarza wiadomości Windows jako domyślną implementację. Więc założę, że twoje pytanie opiera się na błędnej logice.