printf-Umleitung in eine MFC Textbox



  • Hallo Allerseits,

    folgendes Problem:

    ich habe eine Lib, in der irgendwelche Funktionalität steckt unter anderem auch printf-Ausgaben. Diese Lib wurde bis jetzt in eine Dos-Konsolenanwendung gelinkt, wo auch die printf-Ausgaben wieder auftauchten.
    Nun soll das ganze unter MFC laufen, funktioniert auch wunderbar - bis auf die printf's.
    Hat jemand eine Idee wie man einen printf-Datenstream in eine MFC-Textbox umleiten kann?

    Gruß und Danke,

    u-Control



  • Du müßtest die Standardausgabe in eine Pipe umleiten, die du dann für die textbox wieder einliest.

    Ich weiß wie#s für einen Child-Prozess geht, für den "eigenen" Prozeß muß ich erstmal suchen...

    ping mich an wenn ich's vergeß.



  • OK, das umsetzen ist einfach:

    BOOL SetStdHandle(
      DWORD nStdHandle,
      HANDLE hHandle
    );
    

    Jetzt nur noch der Handle 😉 Hier kannst Du im prinzip alles angeben, was man mit CreateFile anlegen oder öffnen kann, für deinen Zweck bietet sich aber eine Pipe an:

    HANDLE hReadEnd, hWriteEnd;  
    BOOL ok = CreatePipe(&hReadEnd, &hWriteEnd, NULL, 0);
    
    SetSdHandle(STD_OUTPUT_HANDLE, hWriteEnd);
    
    // Jetzt kanst du mit PeekNamedPipe Infos über die Daten in der Pipe abholen, und mit ReadFile auslesen - z.B. im OnIdle handler, oder Timer-gesteuert
    

Anmelden zum Antworten