Konsolenausgabe in WinAPI-Progs???



  • Hi Leudde!
    Sacht ma, es ist doch besitmmt irgendwie möglich, anweisungen wie printf oder den cout-stream in WinAPI-Programmen zu benutzen, oder??? Also das man über das WinAPI-Programm mit eigenen Fenstern etc. auch ein DOS-Fenster öffnen kann und dort via printf und scanf sachen ein- und ausgeben kann??? Wie geht das??

    Gruss, code_pilot 🙄



  • Probiers mal damit (geht zumindest für printf und scanf):

    void InitConsole ()
      {
      int hCrt;
      FILE * hf;
      struct _COORD bufferSize = { 80, 1000 };
    
      AllocConsole ();
      SetConsoleScreenBufferSize (GetStdHandle (STD_OUTPUT_HANDLE), bufferSize);
      hCrt = _open_osfhandle ((long) GetStdHandle (STD_OUTPUT_HANDLE), _O_TEXT);
      hf = _fdopen (hCrt, "w");
      * stdout = * hf;
      hCrt = _open_osfhandle ((long) GetStdHandle (STD_ERROR_HANDLE), _O_TEXT);
      hf = _fdopen (hCrt, "w");
      * stderr = * hf;
      hCrt = _open_osfhandle ((long) GetStdHandle (STD_INPUT_HANDLE), _O_TEXT);
      hf = _fdopen (hCrt, "r");
      * stdin = * hf;
      }
    


  • Thx, aber der Compiler (C++Builder 4) sacht:

    undefined symbol: _O_TEXT
    welche header brauche ich 😕



  • Sorry, hatte ich vergessen:

    #include <windows.h>
    #include <stdio.h>
    #include <io.h>
    #include <fcntl.h>
    


  • Jo danke, ein Fenster wird nun angezeigt, aber wenn ich printf aufrufe passiert nix ... 😞

    code_pilot 😞



  • Mit VC++ gehts. Beim Borland scheint sich die stdio anders zu verhalten. Dazu müßte man die Borland-Doku durchstöbern. Ich habe leider nur die Kommandozeilenversion bcc 5.5 (Ohne Doku).



  • der blöde Borland sacht, es gibt kein _O_TEXT, wohl aber O_TEXT_ und dass funzt dann auch wieder nicht. Bei O_TEXT sagt er nix, aber dann sieht man auch nix. 😞


Anmelden zum Antworten