Problem mit cprintf



  • Hi Leute

    ich hab ein Problem.

    Wenn ich mit Hilfe von SideWinder's Resize die Konsole auf 50 Zeile vergrößere, und dann mit cprintf ein Rahmen machen will, macht er diesen bis zur 47 oder so und verschiebt das Fenster nach oben, so als hätte man mit hilfe window das bis auf die 47. zeile begrenzt.

    Benutze Borland 6.0 Builder

    Damit ihr wisst was ich meine, schreib ich hier mal meinen Quellcode hin, dann könnt ihr es ja ausprobieren:

    #include <process.h>
    #include <stdio.h>
    #include <conio.h>
    #include <windows.h>
    #include <iostream.h>
    
    void Resize ( DWORD SizeX , DWORD SizeY , HANDLE StdOutput = GetStdHandle ( STD_OUTPUT_HANDLE ) ) {
        CONSOLE_SCREEN_BUFFER_INFO csbi;
        COORD c = GetLargestConsoleWindowSize ( StdOutput );
        SMALL_RECT sr;
    
        GetConsoleScreenBufferInfo ( StdOutput , &csbi );
    
        sr.Bottom = min ( SizeX , c.X ) - 1;
        sr.Right = min ( SizeY , c.Y ) - 1;
        sr.Top = sr.Left = 0;
    
        c.X = SizeX;
        c.Y = SizeY;
    
        if ( csbi.dwSize.X > SizeX || csbi.dwSize.Y > SizeY )
        {
            SetConsoleWindowInfo ( StdOutput , TRUE , &sr );
            SetConsoleScreenBufferSize ( StdOutput , c );
        }
        else
        {
            SetConsoleScreenBufferSize ( StdOutput , c);
            SetConsoleWindowInfo ( StdOutput , TRUE , &sr );
        }
    }
    
    void hauptfenster (void) {
    
    int i;
    i=47;
    
      clrscr ();
    
      cprintf   ("ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍDigital Pf”rdner 2002ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»");
      do
       {
        cprintf ("º                                                                              º");
        i=i-1;
       }
      while (i!=0);
      cprintf   ("ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ");
      gotoxy   (1,5);
      cprintf  ("ÇÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄĶ");
      }
    
    void main (void) {
        char taste;
    
        Resize (80,50); // Andere Zeichensatzauflösung
    
            textcolor (4);
            textbackground(6);
    
            hauptfenster ();
            getch ();
    }
    


  • Befürchte fast, dass sich Borland intern irgendwo die Größe merkt. Gibt es keine Resize()-Funktion aus der Borland-Bibliothek?

    MfG SideWinder



  • das hat mit dem Befehl cprintf zutun, mach ich mit printf, so stellt er es richtig dar nur ohne Farben.

    Bitte hilft mir, ich verzweifle schon. Ich hab in der Schule ne alte version von Borland mit Farbe, wo man das format nicht ändern kann und dort sind es glaube ich 50 zeilen und es soll ja den gesamten Bildschirm füllen.

    THX für die, die sich mit diesem Problem auseinandersetzen.
    1000 mal THX für den der das Problem löst.

    Morpheus2k



  • Ich kann dir leider keine Lösung für dein Problem bieten, allerdings einen Umweg:

    1.) Farben, etc. nicht durch Borlandfunktionen sondern durch die Improved Console regeln lassen.
    2.) printf() verwenden.

    Dann funktioniert Resize(). printf() stellt angeblich ja richtig dar außer die Farben die ja dann anders geregelt werden.

    MfG SideWinder



  • Hab das Problem dank eines Freundes gelöst.

    Hab die Auflösung mir Hilfe textmode (); verändert, da klappt auch cprintf richtig.

    Danke dir trotzdem Sidewinder.

    MfG Morpheus2k


Anmelden zum Antworten