Last Updated 2002/01/23
Windows コンソール
Windowsアプリからコンソールへ出力
2002/01/23

Windowsアプリをデバッグ中にデバッグ情報が欲しい場合が多々存在する.
メッセージボックスなどでは面倒で,しかもマルチスレッドのタイミングなどがとりづらかったりする.
以下の方法ではコンソール画面を生成して,そこにデバッグ情報を出力する.

HANDLE conOut;

// アプリ起動時
AllocConsole();
conOut = GetStdHandle(STD_OUTPUT_HANDLE);

// アプリ終了時
FreeConsole();

上記の手続きをふまえた上で,以下の関数を呼ぶ.

void dbgOut(TCHAR *szForm, ...)
{
    DWORD iOut;
    TCHAR szBuf[MAX_PATH + 1];
    va_list args;

    va_start(args, szForm);
    iOut = wvsprintf(szBuf, szForm, args);
    va_end(args);
    WriteFile(conOut, szBuf, iOut, &iOut, 0);
}

使用例は以下.

dbgOut("Enter foo()!\n");
dbgOut("foo: %s, bar %X\n", foo, bar);

出力先のコンソールはconagent.exeが制御してる.
そのプロパティはconagent.pifで設定できる.


参照
コンソールの制御
デバッグトレース
前後のTips
Windowsアプリからコンソールへ出力

DSS ProgrammingTipsCGI Ver1.02