Die meisten GUI-Toolkits verwenden heutzutage das Modell Signals + Slots. Es waren Qt und GTK +, wenn ich mich nicht irre, die Pionierarbeit geleistet haben.
Sie wissen, dass die Widgets oder grafischen Objekte (manchmal sogar solche, die nicht angezeigt werden) Signale an den Main-Loop-Handler senden . Der Main-Loop-Handler ruft dann die Ereignisse , Rückrufe oder Slots auf, die für dieses Widget / grafische Objekt zugewiesen sind. Im virtual
Gegensatz zu früheren Designs, bei denen der Entwickler die gesamte Hauptschleife und den Handler für jede einzelne Nachricht selbst schreiben musste, gibt es normalerweise bereits vom Toolkit bereitgestellte (und in den meisten Fällen ) Event-Handler, die alle vordefinierten Signale verarbeiten (denken Sie an WINAPI), der Entwickler muss sich nur um die Signale kümmern, auf denen er neue Funktionen implementieren muss.
Soweit ich weiß, wird dieses Design jetzt in den meisten modernen Toolkits verwendet. Es gibt Qt, GTK +, FLTK usw. Es gibt Java Swing. C # verfügt sogar über eine Sprachfunktion (Ereignisse und Delegaten), und Windows Forms wurde für dieses Design entwickelt. Tatsächlich ist dieses Design für die GUI-Programmierung im letzten Jahrzehnt zu einer Art ungeschriebenem Standard geworden. Da es die Produktivität erhöht und eine größere Abstraktion bietet.
Meine Frage ist jedoch:
Gibt es ein alternatives Design, das für die moderne GUI-Programmierung parallel oder praktisch ist?
dh Ist das Signal + Slots-Design das einzige praktische in der Stadt? Ist es möglich, GUI-Programmierung mit einem anderen Design durchzuführen? Sind moderne (vorzugsweise erfolgreiche und beliebte) GUI-Toolkits auf einem alternativen Design aufgebaut?
std::function
, nicht ein asynchrones Signal. Darüber hinaus ist die WinAPI nicht zur Verfügung stellen ,DefWindowProc
welche Windows - Nachrichten als Default - Implementierung verarbeitet. Ich gehe also davon aus, dass Ihre Frage auf einer fehlerhaften Logik basiert.