ネイティブ C Windows プログラムでコンソール出力を表示するにはどうすればよいですか?

DDD
リリース: 2024-11-20 16:04:15
オリジナル
524 人が閲覧しました

How to Display Console Output in a Native C   Windows Program?

ネイティブ C Windows プログラムでのコンソール出力の表示

WinMain エントリ ポイントを使用する C Windows プログラムでは、std などの関数によって生成されるコンソール出力: :cout はデフォルトでは表示されない場合があります。これは、グラフィカル ユーザー インターフェイス (GUI) アプリケーションには通常、関連付けられたコンソール ウィンドウがないためです。

解決策:

1.アプリケーションにコンソールを接続します。

  • AllocConsole() 関数を利用して、プログラム用の新しいコンソール ウィンドウを作成します。
  • 標準入力 (STDIN)、出力 ( STDOUT)、およびエラー (STDERR) は、_open_osfhandle() や _open_osfhandle() などの関数を使用して新しいコンソールにストリームされます。 _fdopen().

2.コンソール出力をファイルにリダイレクトします:

  • コードベースを変更できない場合でも、テキスト ファイルにリダイレクトすることでコンソール出力を表示できます。
  • FreeConsole( ) 関数を使用して、コンソール ハンドルを解放します。
  • OutputDebugString() を呼び出して、出力をファイルにリダイレクトします。これは、 DebugView.

コンソール リダイレクトを使用したサンプル コード:

次のコード スニペットは、コンソールを Windows プログラムに接続し、ストリームを Windows プログラムにリダイレクトする方法を示しています。それ:

void RedirectIOToConsole()
{
    int hConHandle;
    long lStdHandle;
    CONSOLE_SCREEN_BUFFER_INFO coninfo;
    FILE *fp;

    // Allocate a console for this app
    AllocConsole();

    // Set the screen buffer size for scrolling
    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
    coninfo.dwSize.Y = 500;
    SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);

    // Redirect stdout
    lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
    hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
    fp = _fdopen(hConHandle, "w");
    *stdout = *fp;
    setvbuf(stdout, NULL, _IONBF, 0);

    // Redirect stdin
    lStdHandle = (long)GetStdHandle(STD_INPUT_HANDLE);
    hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
    fp = _fdopen(hConHandle, "r");
    *stdin = *fp;
    setvbuf(stdin, NULL, _IONBF, 0);

    // Redirect stderr
    lStdHandle = (long)GetStdHandle(STD_ERROR_HANDLE);
    hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
    fp = _fdopen(hConHandle, "w");
    *stderr = *fp;
    setvbuf(stderr, NULL, _IONBF, 0);
}
ログイン後にコピー

を含めるヘッダー:

#include "guicon.h"
ログイン後にコピー

使用法:

#ifdef _DEBUG
    RedirectIOToConsole();
#endif
ログイン後にコピー

以上がネイティブ C Windows プログラムでコンソール出力を表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート