Win32アプリケーションで MS-DOS プロンプトを表示 †デバッグ目的なら OutputDebugString?() で事足りるが、 それ以外の場合にもコンソール表示したいよ? というときに便利な方法。 AllocConsole() で、DOS 窓が表示され、 WriteConsole() で、その DOS 窓に対して文字列を表示して、 FreeConsole() で、その DOS 窓を閉じる。 WriteConsole?() の第1引数はバッファのハンドルであるが、 GetStdHandle(STD_OUTPUT_HANDLE); で取得したものをそのまま使えば良い。 Ex) // DOS 窓表示 ::AllocConsole(); // 適当な文字列 char buf [16]; sprintf( buf, "Hello World!\n" ); // 表示 DWORD dwSize; ::WriteConsole( GetStdHandle(STD_OUTPUT_HANDLE), buf, strlen( buf ), &dwSize, NULL ); // DOS 窓を閉じる ::FreeConsole(); これはいろいろ使い道がありそう。 |