Ich möchte eine GUI für meine Anwendung erstellen. Es sollte auf mehreren Plattformen funktionieren. Ich möchte, dass der Großteil des Codes für das gesamte Betriebssystem (UNIX, Windows, MAC) übertragbar ist.
GTK und GLib sehen wie eine gute Lösung aus. Ich möchte auch native APIs verwenden
Wie geht das alles?
Sie müssen eine PAL ( Platform-Abstraktionsschicht ) implementieren.
Diese Schicht sollte eine Abstraktion über die tatsächlichen Plattformaufrufe bereitstellen, indem Schnittstellen bereitgestellt werden, die nicht plattformabhängig sind. Sobald Sie zu einer anderen Plattform wechseln, muss nur das PAL für diese spezielle Plattform implementiert werden und der Rest der Anwendung kann unverändert verwendet werden.
Qt scheint eine Option zu sein. Aber wenn Sie Windows-APIs verwenden möchten, ist es nicht tragbar. Qt in Windows wird Sachen wie CreateWindow usw. benutzen, aber Sie werden nicht. Z.B. Der Disassembler IDA wurde kürzlich in Qt neu geschrieben und ist nun plattformübergreifend.
Ich denke, es lohnt sich, die native Fensterebene auf jeder Zielplattform zu erlernen.
Als solche:
Ich persönlich mag QT nicht, da sie ihren eigenen Meta-Compiler erfunden haben, was QT-Code (ironisch) schwierig macht, in Nicht-QT-Umgebungen zu portieren. QT bietet jedoch eine Abstraktion des nativen Widget-Sets, wenn möglich.
wxWidgets ist eine praktische Wrapper-API, die Win32Api, Cocoa api und GTK + auf den entsprechenden Plattformen bereits umschließt. Ich habe es jedoch vermieden, da Wx auf Microsoft MFC basiert - ein etwas veraltetes Document / View C ++ - Framework und ich wollte die zugrunde liegenden Plattformen verstehen.
Bitte werfen Sie einen Blick auf Qt Framework. Dies wird Ihnen helfen, plattformübergreifende GUI-Anwendungen zu erstellen. Sie müssten sich auf die API Offered by Qt für native Plattform-Aufgaben verlassen, wenn Sie die nativen APIs verwenden möchten, ist Ihr Code nicht übertragbar.
Tags und Links c c++ user-interface windows unix