Zeichnen auf der Konsole?



  • Hi,
    Ich suche gerade nach einem Weg ein Konsolenprogramm gut zu strukturieren, sprich ordentliche Menüs etc.
    Das kann man ja einmal mit getchar() gut hinbekommen, jedoch wie kann ich dann Menüs etc. gut auf der Konsole zeichnen?
    Hab da nix zu bei google gefunden...
    Geht das nur mit DirectX/OpenGL oder auch mit C++-Klassen, die halt nicht auf DirectX/OpenGL aufbauen?(kann auch erstmal nur auf Windows sein)

    Es geht hier nicht um die wirtschaftlichkeit eines C++-Programmes, man könnte das ja einfach mit VC++/BorlandC++ Builder etc. pp. bauen, ich will nur wissen obs überhaupt nen anderen Weg gibt außer auf die Grafikliberys zurückzugreifen.

    Danke



  • Auf der (reinen) Konsole kannst du höchstens ASCII-Art Grafiken hinbekommen (ich kenne eine TP-Bibliothek namens "Turbo Vision", die konnte auf dieser Basis recht ansehnliche Fenster anzeigen - keine Ahnung, ob Borland sowas auch für C++ hat). Wenn du "echte" Fenster im Windows-Design haben willst, kannst du entweder direkt auf die WinAPI zugreifen (erfordert einiges an Systemverständnis) oder Wrapper-Bibliotheken dafür verwenden (z.B. MFC).



  • Ja darum gehts ja- entweder macht mans so wie fast alle Programme, also mit richtigem Fenster oder irgendwie auf der Konsole.
    Aber mit DirectX/OpenGL ginge das ja auch, nur wäre recht aufwendig...
    Geht das nicht auch mit glu.h oder graphics.h?
    hab ich mal irgendwo aufgeschnappt 🙂



  • es gibt ein undokumentiertes feature, um ins console window bitmaps zu zeichnen

    #define CONSOLE_GRAPHICS_BUFFER 2
    
    typedef struct _CONSOLE_GRAPHICS_BUFFER_INFO {
        DWORD dwBitMapInfoLength;
        LPBITMAPINFO lpBitMapInfo;
        DWORD dwUsage;
        HANDLE hMutex;
        PVOID lpBitMap;
    } CONSOLE_GRAPHICS_BUFFER_INFO, *PCONSOLE_GRAPHICS_BUFFER_INFO; 
    
    CONSOLE_GRAPHICS_BUFFER_INFO GraphicsInfo;
    
    // etwa so...
    Handle = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE,
                                               FILE_SHARE_READ | FILE_SHARE_WRITE,
                                               &SecurityAttributes,
                                               CONSOLE_GRAPHICS_BUFFER,  // <<-- !!
                                               &GraphicsInfo  // <<-- !!
                                              );
    

    aus: ...\private\ntos\w32\ntcon\client\tgraph.c
    sucht mal im internet danach
    🙂



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum DOS und Win32-Konsole verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Die Ideen sind ja alle nicht schlecht, jedoch gibts dazu keine Tutorials im Internet und zum anderen Weiss ich nicht wirklich wie ich damit verschiedene Menüs bzw. Eingabefelder realisieren sollte.
    SO bräuchte ich eigentlich mehrere Konsolenfenster in einem,sodass ich in dem einen etwas eingebe, in dem anderen usw...





  • hmm ja nein...
    Die Frage ist doch:
    Wie kann ich verschiedene Eingabe gleichzeitig in der Konsole annehmen(=Eingabefelder)
    Dachte das so, dass man dann einfach ein Konsole in die Konsole packt und in soweit verändert, dass man nur noch den Bereich der Eingabe sieht.


Anmelden zum Antworten