Guis machen, aber wie ?



  • trololol schrieb:

    ... Ich hab mit die FLTK Lib reingezogen (wollte mein VC++
    leider nicht annehmen) und dann noch die ganz normal WinApi guis (also nach
    http://www.win-api.de/)

    . . . und eine konsole halt kein multitasking betreibt :DD)

    1. Wie kommst du darauf, das man Konsolenprogramme nicht multithreaded programmieren kann?

    2. Bei Windows ist WinAPI vermutlich die Grundlage aller GUI-Libs.

    Creating Win32-Based Applications (C++)
    http://msdn.microsoft.com/en-us/library/bb384843.aspx

    3. Habe die FLTK Version 1.3.2 gerade runtergeladen
    Was verstehst Du unter einbinden ?

    auspacken

    ..\fltk-1.3.2-source\fltk-1.3.2\ide\VisualC2010

    Solution fltk.sln anklicken

    Danach lassen sich eine Menge funktionierende Beispiele problemlos
    kompilieren und starten.

    Allerdings scheinen alle Beispiele (z.B. hello) auf Kommandozeilen zu
    basieren. Es wird also im Hintergrund immer ein Kommandofenster geöffnet.

    Lösungsvorschläge wie
    http://www.gidforums.com/t-6593.html

    .. just replace main() with WinMain() and change the compiler's SUBSYSTEM
    link option to /SUBSYSTEM:WINDOWS in the IDE or with a pragma.

    führen leider nicht immer zum Ziel.

    Bei buttons.vcxproj reicht jedoch z.B.

    #include <Windows.h>
      /* int main(int argc, char **argv) {  */
      int CALLBACK WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, 
                            LPSTR lpCmdLine, int nCmdShow ) {
         int argc = 1;
         char *argv[1] = { "demo" };
    

    Bem: Linkeroption steht bereits auf Windows.



  • Die direkte Programmierung mit WinApi ist recht aufwendig und nicht jedermans Sache. Leichter ist der Einsatz von Programmieroberflächen - wie z.B. Visual Studio - mit den dort angebotenen Compilern (VB, VC++, VC#, ...). Man muss allerdings ein Verständnis der Objektorientierten Programmierung OOP haben oder gewinnen.

    Ich denke, es werden zunehmend weniger, die direkt die WinApi einsetzen.



  • trololol schrieb:

    Ich hab mit die FLTK Lib reingezogen (wollte mein VC++ leider nicht annehmen)

    Was soll ich sagen, ich verwende FLTK mit allen meisten Visual Studio Version angefangen bei 2005 bis 2012. Mit VS 6 habe ich es noch nicht getestet.



  • merano schrieb:

    1. Wie kommst du darauf, das man Konsolenprogramme nicht multithreaded programmieren kann?

    Ich glaube, er meinte eigentlich was anderes. Ich hätte das eher so verstanden, dass es ihm um die gleichzeitige Bildschirmdarstellung der eingehenden Chat-Nachrichten und einer Eingabemaske für eigene Nachrichten geht, die unabhängig von einander gleichzeitig arbeiten und vor allem angezeigt werden.

    @TE - das geht schon auch. Es gibt ja durchaus Bibliotheken, mit denen man auch aufwändige textbasierte UIs bauen kann. Standard dürfte hier für Windows wohl conio.h sein, wobei ich nicht sicher bin, ob das nur für C, oder auch für C++ gilt.



  • Naja, die WinAPI bietet auch Funktionen für Scrolling, Cursorpositionierung, Vorder/Hintergrundfarben usw. an. Geht also alles auch in einer Konsole.
    Trotzdem würde man ein (richtig schönes) Chat-Programm ohne Not wohl eher nicht in der Konsole laufen lassen.



  • Ich finde die WinAPI ganz nett und benutze sie. Der Grund ist, dass sie so schön einfach ist. Es gibt ganz simple Funktionen die man einfach nur aufrufen muss. Am Anfang sucht man ganz schön wenn man nicht weiß wie eine Funktion heißt, aber das kriegt man hin.
    Ich habe später QT benutzt und gtk versucht zu benutzen. Das Problem bei denen ist, dass es kein einfaches CreateWindow mehr gibt, sondern eine Klasse Window, die von Widget erbt das von 20 anderen Klassen erbt und alles public. Das heißt, um die Klasse Window zu verstehen muss man die anderen 20 Klassen auch verstehen, sowie verwandte Dinge wie Canvas (wovon es ~5 verschiedene Varianten gibt) und man sich fragt, wie man das in ein Window kriegt.
    Aus diesem Grund habe ich eine Vorliebe für C-Libs entwickelt, weil es leicht ist ein paar Funktionen in einer Klasse zu wrappen, während es schwer ist den gesamten Baum von Klassenvererbungen zu verstehen.
    Natürlich tut man damit ein bisschen Arbeit, die bei QT schon getan wurde, aber eigenen Code schreiben (zumal so simpel) ist einfacher als fremden Code zu verstehen.
    Es ist schade dass es nichts vergleichbares für Linux gibt.



  • trololol schrieb:

    jetzt hab ich mir überlegt ob es vielleicht sinnvoller wäre wenn ich die C# oder VB wechseln würde.

    Nein, wenn du C++ schon 2 Jahre lang machst und NUR wegen so GUI Kram wechseln willst halte ich das für Unfug.

    Bei QT gibt es doch auch sowas wo man sich seine Oberfläche zusammenklicken kann (wie z.b. in VB).

    Ansonsten schau dir mal den RAD Studios oder so an, da kannste dir auch deine Oberflächen zusammenklicken das Framework nennt sich VCL.

    Wer googeln kann findet das Programm auch kostenlos im IINnntternnnett :D.
    Wer dann noch nach Richard Kaiser C++ Builder googeln kann der findet auch ein Buch wo dieser VCL Kram erklärt ist.



  • @bassmaster ...
    danke für deine antowrt hat mich ermutigt 😃

    mit den zusammenklicken muss nichtmal ^^ ich bin jetzt doch mit der normalen winapi angefangen und komm eigendlich ganz gut klar damit 😃

    qt etc. werd ich mal nachgucken danke 😃



  • Winapi macht man eigentlich nur, wenn man unbedingt muss. Natürlich kann man das machen und es ist auch nicht weiter schwer. Aber es ist umständlich und reine Zeitverschwendung. In Qt kriegt man dasselbe wesentlich schneller fertig + hat noch tausende andere Features, für die man mit der Winapi nochmal ewig viel Zeit brauchen würde. Konzentrier dich auf deine Programmlogik und nicht auf die Gui, Guis programmieren ist langweilig.



  • Ich würde von Embarcadero/Borland/etc.-Produkten heutzutage abraten, wenn da gerade von der VCL gesprochen wird. Die Hinken der Zeit ständig hinterher und sind auch noch verdammt teuer. Außerdem würde ich mir um den Fortbestand der Firma Sorgen machen, falls man auf Support baut... Aber vielleicht bin ich auch ein Schwarzmaler... Naja, seit ein paar Wochen können sie ja immerhin x64 targetten.


Anmelden zum Antworten