Improved Console 3.0



  • Ich habe die letzte Woche nun die dritte Version der Improved Console fertiggestellt. Sie ist jetzt eine Woche in der Beta-Phase danach wird auch die FAQ auf sie verlinken und die Seite fertig sein.

    http://ic.sidewindershome.net

    Changelog:
    - normal() führt aus maximize()/minimize() wieder zurück
    - Trennung von Hintergrund- und Textfarbe
    - setSize() dank neuem Verfahren nun 100% funktionstüchtig, etwas langsamer als bisher
    - getMaxSizeX()/getMaxSizeY() liefern nun die tatsächlich größte Fenstergröße, nicht die Größe des derzeitigen Konsolenpuffers
    - Shorties (Wrapper-Funktionen für Console-Methoden-Aufrufe) um die alten conio.h-Namen wiederherzustellen (zB gotoxy(), clrscr(), etc.)
    - Update der Mover-Demo mit mehr Kommentaren
    - Komplett neue Tech-Demo die alle Techniken präsentiert die die Improved Console unterstützt, Quellcode liegt selbstverständlich bei
    Win2000/XP-Only:
    - isFullscreen() liefert derzeitigen Fullscreen-Status
    - fullscreen(bool) lässt fullscreen() gezielt ein- und ausschalten (nicht nur toggle)
    MSVC-2003-Only:
    - Build-Version (Es reicht die Dateien in das richtige Verzeichnis zu kopieren, sowohl als Debug als auch als Release vorhanden)
    - Installer-Version (Installiert alle nötigen Dateien und die beiden Demos Mover-Demo und Tech-Demo)

    MfG SideWinder



  • Warum machst du nicht einfache C-Funktionen statt diesem class- und namespace- Gedöns?



  • Weil ich nunmal C++ programmiere und nicht C :), wenn du von dem alles nichts wissen willst kannst du ja die "Shorties" benützen!

    #include <iostream>
    #include <ic.h>
    using namespace std;
    using namespace ic;
    using namespace ic::colors;
    using namespace ic::shorties;
    
    int main ()
    {
        gotoxy(10,10);
        textcolor(FG_RED);
        cout << "Hello World" << endl;
    
        return 0;
    }
    

    MfG SideWinder



  • Extra für alle C-Liebhaber noch eine Schnittstelle eingeführt:

    #include <iostream>
    #include <ic.h>
    using namespace std;
    
    int main ()
    {
        // Automatisches Benutzen von Shorties und Einbinden des colors-Namespace
        bgcolor(BG_RED);
        cout << "Hello World" << endl;
    
        return 0;
    }
    

    Die normale C++-Schnittstelle ist nun in der ic.hpp zu finden:

    #include <ic.hpp>
    

    Ein paar Bugfixes hab ich auch noch eingebaut, außerdem ein neues Shorty title(). Damit sind wir bei Version 3.2 und ich wünsche viel Spaß!

    MfG SideWinder



  • Es fehlt noch die programmgesteuerte Umschaltung in den Full Screen Modus und zurück.



  • Als Shorty oder überhaupt?

    if(!con.isFullscreen())
        con.fullscreen(true);
    
    if(con.isFullscreen())
        con.fullscreen(false)
    
    // bzw. im Compatible-Mode nur
    con.toggleFullscreen();
    

    MfG SideWinder



  • SideWinder schrieb:

    Als Shorty oder überhaupt?

    Überhaupt. Die keybd_events sind ein ziemlicher Hack. Das funktioniert nur, wenn die Anwendung den Fokus hat.



  • In der Tat aber derzeit nicht anders zu bewerkstelligen. Wenn du eine bessere Möglichkeit hast nur her damit 🙂

    Den Fokus zu holen sollte ja kein Problem sein.

    MfG SideWinder



  • Auch das Anpassen der Konsolengröße ist inzwischen ein Hack, der funktioniert jetzt dafür aber wenigstens im Gegensatz zu allen früheren Versionen.

    Der Konsolenpuffer darf nie unter die Größe des Fensterpuffers kommen. Das heißt, dass wenn das Fenster in x-Richtung größer und in y-Richtung kleiner gemacht werden soll sind 2 Operationen nötig. Ansonsten gilt es immer den richtigen Vorgang zuerst zu tun. Das erspar ich mir durch zeroSize(). Sooft wird die Größe ja sowieso nicht geändert.

    MfG SideWinder



  • #include <windows.h>
    #include <stdio.h>
    
    #ifdef __cplusplus 
    extern "C" 
    #endif 
       DWORD __stdcall SetConsoleDisplayMode (HANDLE, DWORD, PVOID); 
    
    int main() 
    { 
       DWORD val; 
       SetConsoleDisplayMode (GetStdHandle(STD_OUTPUT_HANDLE), 1, &val);    
       puts ("hello, full screen");
       Sleep (INFINITE);  
    }
    


  • Das kickt dann aber endgültig auch noch Win2k aus dem Rennen und erlaubt nur noch WinXP als Betriebssystem. Also neuen Compatible-Modus einführen, wusste gar nicht, dass es die Funktion gibt, tolle MSDN die ich da offline hab 😞

    MfG SideWinder



  • Das geht sogar unter NT, deshalb auch der Prototyp. In den SDK Headern ist die Funktion erst seit XP drin.


Log in to reply