「良いこと」を行うサードパーティのライブラリにアクセスできます。stdoutにステータスメッセージと進行状況メッセージを発行します。コンソールアプリケーションでは、これらのメッセージを問題なく表示できます。Windowsアプリケーションでは、ビットバケットに移動するだけです。
stdoutとstderrをテキストコントロールまたは他の表示可能な場所にリダイレクトする非常に簡単な方法はありますか?理想的には、これはサードパーティのコードの再コンパイルを必要としません。それは低レベルで蒸気を遮断するだけです。ヘッダーを#includeし、初期化関数を呼び出して、ライブラリを次のようにリンクするソリューションが必要です...
#include "redirectStdFiles.h"
void function(args...)
{
TextControl* text = new TextControl(args...);
initializeRedirectLibrary(text, ...);
printf("Message that will show up in the TextControl\n");
std::cout << "Another message that also shows up in TextControl\n";
}
特定のGUIライブラリに関連付けられないように、オーバーライドできるインターフェイスを使用した方がよいでしょう。
class StdFilesRedirector
{
public:
writeStdout(std::string const& message) = 0;
writeStderr(std::string const& errorMessage) = 0;
readStdin(std::string &putReadStringHere) = 0;
};
私はただ夢を見ていますか?または、誰かがこのようなことをすることができる何かを知っていますか?
2つの答えの後で編集する:ファイルをリダイレクトするためにfreopenを使用することは良い最初のステップだと思います。完全なソリューションを得るには、ファイルを読み取って出力を表示するために新しいスレッドを作成する必要があります。デバッグの場合、cygwinシェルウィンドウで「tail-f」を実行するだけで十分です。より洗練されたアプリケーションの場合...これを書きたいのですが...スレッドを作成するための追加の作業などがあります。